Va bene, sono incappato in una risposta: -
Dopo aver fatto un po 'di ricerca, ho scoperto che this user on Google Forums ha anche lo stesso problema.
Per dirla semplicemente, il modo in cui funziona è utilizzare uno <script>
per generare la barra di ricerca.
si ha questa funzione + elemento HTML per la vostra barra di ricerca
<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>
Così abbiamo generato il bar nel nostro <div class="header">
che è un elemento HAML
, come parte di un modello. Quindi è stato sempre caricato all'interno di ogni intestazione. Dato che abbiamo 10 pagine, questo stesso script è stato generato 1 volta per pagina.
Il nostro Google CSE è fatto per cercare e quindi reindirizzare all'url /search-results
dove genera i risultati.
per generare i risultati, è necessaria questa funzione e 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>
Quale è lo stesso di quello che viene caricato nel nostro intestazione. Con questa configurazione, la pagina dei risultati chiama lo <script>
due volte durante il caricamento e causa l'interruzione dello JS
. Quindi, dopo aver rimosso il <script>
caricando i risultati, ha smesso di lanciare l'errore.
Per dirla in breve, assicurati di non chiamare lo stesso function
due volte nella pagina dei risultati, e dovrebbe deselezionare lo Uncaught TypeError
.
No. Ripetere. Yourself
--ether
Grazie mille per la soluzione suggerita.In effetti, stiamo utilizzando una semplice casella HTML TEXT su tutte le nostre pagine e quindi reindirizzare la query di ricerca a una specifica pagina di ricerca. In questa pagina di ricerca, abbiamo la casella di ricerca di Google (generata dallo script) e i risultati della ricerca. Credo che la sceneggiatura che è stata eseguita due volte abbia causato il problema anche a noi. Ho rimosso uno di loro e sembra funzionare in questo momento. Grazie mille per averlo documentato. –