好吧,我偶然發現了一個答案: -
做一些更多的研究後,我發現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個頁面,每個頁面都會生成一次相同的腳本。
我們的Google CSE搜索並重定向到其產生結果的網址/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的搜索框(由腳本生成)和搜索結果。我相信,兩次運行的腳本也給我們造成了這個問題。我已經刪除了其中的一個,現在似乎可以工作。 非常感謝您的記錄。 –