Хорошо, я наткнулся на ответ: -
После этого еще некоторое исследование, я обнаружил, что this user on Google Forums также имеет один и тот же вопрос.
Проще говоря, как это работает, вы используете <script>
для создания поисковой панели.
У вас есть эта функция + HTML элемент для вашей панели поиска
<script>
(function() {
var cx = '###';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:searchbox-only resultsUrl="/search-results"></gcse:searchbox-only>
Таким образом, мы сформировали бар в нашем <div class="header">
, который является HAML
элементом, как часть шаблона. Поэтому он всегда загружался в каждый заголовок. Поскольку у нас есть 10 страниц, этот же скрипт был создан 1 раз на странице.
Наш CSE Google создан для поиска, а затем перенаправления на url /search-results
, где он генерирует результаты.
Для генерации результатов, вам необходима эта функция и HTML
<script>
(function() {
var cx = '###';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
который так же, как один загружаемые в нашем заголовке. С этой настройкой страница результатов будет называть это <script>
дважды при загрузке, а также приводит к поломке JS
. Итак, после удаления <script>
загрузки результатов он прекратил бросать ошибку.
Для краткости, просто убедитесь, что вы не назовите то же самое function
дважды на странице результатов, и оно должно очистить Uncaught TypeError
.
Не делайте этого. Повторение. Самостоятельно
--ether
Большое спасибо за предлагаемое решение.По сути, мы используем простой HTML TEXT на всех наших страницах, а затем перенаправляем поисковый запрос на конкретную страницу только для поиска. На этой странице поиска у нас есть окно поиска Google (сгенерированное скриптом) и результаты поиска. Я считаю, что сценарий, который запускался дважды, вызывал проблему для нас. Я удалил один из них и, похоже, работает в это время. Большое спасибо за его документирование. –