caricare jquery due volte causa un errore?

Ho una pagina in cui jquery + altri js vengono caricati:

      

Sto caricando le tabs come segue:

   $(document).ready(function(){ $("#tabs").tabs(); $("#tabs ul li a").corner('7px top'); var $tabs = $('#tabs').tabs(); $tabs.tabs('select', 0); dateValidation(); changeOption(); deleteConfirmation(); });    $(document).ready(function(){ $("#tabs").tabs(); $("#tabs ul li a").corner('7px top'); var $tabs = $('#tabs').tabs(); $tabs.tabs('select', 1); changeOption(); deleteConfirmation(); });   

validationdate.js è un js costruito in miniera che controlla le date e altre cose. ha questo come prima linea:

 document.write(''); 

Problema: è in produzione alla volta … questa pagina mostra errori e genera un errore JS. Questo fa sì che la scheda non sia selezionabile. Questo errore si verifica a intermittenza e non riesco a riprodurlo sulla mia macchina. Entrambe le macchine utilizzano IE. L’errore si verifica anche in Firefox, anche se la piccola cosa dell’errore JS non viene visualizzata in Firefox. e ho persino firebug che non mostra alcun errore JS.

Sospetto che l’errore si jquery-1.3.2.min.js perché validationdate.js sta caricando anche jquery-1.3.2.min.js . Può essere un errore?

A proposito, l’errore JS che ottengo è “Eccezione catturata ma non generata ..line 23” e la linea 23 segue

  

Sono davvero fuori di opzioni qui e sono disposto a provare cose. e anche i modi per riprodurre sulla mia macchina in modo che io possa risolvere il problema !!

Prima di rispondere alla tua domanda, , incluso jQuery due volte può causare tutti i tipi di problemi.

Per risolvere il problema, questa linea:

 document.write(''); 

Dovrebbe essere incapsulato per verificare se jQuery esiste già, invece di includerlo di nuovo ciecamente, in questo modo:

 if (typeof jQuery == 'undefined') { document.write(''); } 

Quindi, lo includerà solo se jQuery non è già nella pagina. C’è un avvertimento, se stai usando una versione diversa (probabilmente più nuova) di jQuery di quella per cui è stato creato il codice di validazione, c’è la possibilità che ci siano delle pause.

ho passato ore a capire perché usare jQuery.noConflict () non funziona come è …

Basta usare var j$ = jQuery.noConflict(); dopodiché usa j $ al posto di $ ogni volta che usi Jquery su quella pagina.

L’utilizzo di un iframe farà sì che JQuery si carichi due volte se tu
1) carica JQuery per ogni pagina (ad esempio in Ruby on Rails tramite application.html.erb) e
2) l’iframe è anche una pagina della tua applicazione piuttosto che un iframe di un sito esterno.