15 Stimmen

zweimaliges Laden von Jquery verursacht einen Fehler?

Ich habe eine Seite, auf der Jquery und andere Js geladen werden:

<script src="/eiv/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery.jeditable.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery-ui-1.7.1.custom.min.js" type="text/javascript"></script>
<script src="/eiv/javascripts/corner.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery.form.js" type="text/javascript"></script>
<script src="/eiv/javascripts/validationdate.js" type="text/javascript"></script>

Ich lade die Registerkarten wie folgt:

<%if (tabnum == 1) {%>
        <script type="text/javascript">

            $(document).ready(function(){
                $("#tabs").tabs();
                $("#tabs ul li a").corner('7px top');

               var $tabs = $('#tabs').tabs();
                $tabs.tabs('select', 0);
                dateValidation();
                changeOption();
                deleteConfirmation();
        });
        </script>
<%} else if (tabnum==2) {%>
        <script type="text/javascript">

            $(document).ready(function(){
                $("#tabs").tabs();
                $("#tabs ul li a").corner('7px top');

               var $tabs = $('#tabs').tabs();
                $tabs.tabs('select', 1);

                   changeOption();
                   deleteConfirmation();
        });
        </script>
<%}%>

die validationdate.js ist ein von mir erstelltes js, das Daten und andere Dinge überprüft. Es hat dies als erste Zeile:

document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');

Problem: Ist, dass in der Produktion zu Zeit ..diese Seite Fehler aus und geben einen JS-Fehler. Dies führt dazu, dass die Tabs nicht anklickbar sind. Dieser Fehler tritt mit Unterbrechungen auf und ich kann ihn auf meinem Rechner nicht reproduzieren. Auf beiden Rechnern wird IE verwendet. Fehler passiert auch in Firefox, obwohl wenig JS Fehler Sache nicht in Firefox zeigen. und ich habe sogar Firebug, die keine JS-Fehler entweder zeigt.

Ich vermute, der Fehler tritt auf, weil validationdate.js lädt auch jquery-1.3.2.min.js . Kann dies ein Fehler sein?

Übrigens ist der JS-Fehler, den ich erhalte, 'Exception caught but not thrown ..line 23' und Zeile 23 ist folgende

<script src="/eiv/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>

Ich bin wirklich aus Optionen hier und bin bereit, Sachen auszuprobieren. und auch Möglichkeiten, auf meiner Maschine zu reproduzieren, damit ich es beheben kann!!!

19voto

Nick Craver Punkte 609016

Zunächst einmal, um Ihre Frage zu beantworten, oui , einschließlich jQuery zweimal kann alle Arten von Problemen verursachen.

Um dies zu beheben, diese Zeile:

document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');

Sollte gewickelt werden, um zu prüfen, ob jQuery bereits vorhanden ist, anstatt es blindlings wieder einzubinden, wie hier:

if (typeof jQuery == 'undefined') {  
  document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');
}

Dann wird es nur eingebunden, wenn jQuery nicht bereits auf der Seite vorhanden ist. Es gibt eine Einschränkung, wenn Sie eine verschiedene (wahrscheinlich neuere) Version von jQuery als der Validierungscode wurde für gebaut, gibt es eine Chance, es gibt einige Brüche.

2voto

user1515295 Punkte 1121

Wenn Sie einen iframe verwenden, wird JQuery zweimal geladen, wenn Sie
1) JQuery für jede Seite laden (z. B. in Ruby on Rails über application.html.erb) und
2) Der iframe ist ebenfalls eine Seite aus Ihrer Anwendung und kein iframe einer externen Website.

1voto

webmaker1 Punkte 379

Ich habe Stunden damit verbracht, herauszufinden, warum die Verwendung von jQuery.noConflict() nicht funktioniert, wie es ist...

Verwenden Sie einfach var j$ = jQuery.noConflict(); und verwenden Sie danach jedes Mal j$ anstelle von $, wenn Sie Jquery auf dieser Seite verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X