2012-04-29 3 views
7

Ich möchte die jquery in Datei enthalten, wenn nicht bereits auf der Seite enthalten. Wie kann ich das tun?Include jQuery, wenn nicht bereits enthalten

Ich schrieb dies, aber es gibt unerwünschte Ausgabe.

<script type="text/javascript"> 
if ('undefined' == typeof window.jQuery) { 
    // jQuery not present 
// alert("Jquery Unavailable"); 
<?php echo '<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>'; ?> 
} else { 
    // jQuery present 
    alert("Jquery Available"); 
} 
</script> 
+0

Verwandte: http://stackoverflow.com/questions/6787569/best-way-to-avoid-including-stylesheets-external-js-more-than-once-in-a- Seite –

Antwort

11

können Sie das in PHP nicht tun. Versuchen Sie stattdessen

<script type="text/javascript"> 

if(typeof jQuery == 'undefined'){ 
     document.write('<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></'+'script>'); 
    } 

</script> 
+1

Diese Art von "Onload" -Hander-Zuweisung birgt das Risiko, dass sie überschrieben wird. Der Aufruf von 'document.write' nach dem Ereignis 'onload' löst das vorhandene Dokument aus! – Quentin

+0

Danke. Ich habe meinen Code bearbeitet – Sethunath

+0

@Sethunath: Weder Ihr noch mein Code funktioniert. Wenn ich dies auf einer Seite ausführe, kommt das Ende nach dem inneren auf Seite ** '); } ** – Thompson

4

Ihr PHP läuft auf dem Server und gibt Text aus.

Der Browser interpretiert diesen Text dann als HTML und JavaScript.

Sie können PHP nicht auf dem Server in einem Dokument ausführen, das es bereits an den Browser als Antwort auf die im Browser ausgeführte Logik gesendet hat.

Sie müssen dies entweder vollständig in JavaScript oder, besser gesagt, sortieren Sie Ihre serverseitige Logik, so dass Sie verfolgen, ob jQuery enthalten ist oder nicht.

6

Sie könnten versuchen, die folgenden:

<script>window.jQuery || document.write('<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"><\/script>')</script> 
9
<script type="text/javascript"> 
    if(typeof jQuery == 'undefined'){ 
     var oScriptElem = document.createElement("script"); 
     oScriptElem.type = "text/javascript"; 
     oScriptElem.src = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"; 
     document.head.insertBefore(oScriptElem, document.head.getElementsByTagName("script")[0]) 
    } 
</script> 
+2

Dies ist eine gute Antwort – Sethunath

+0

Viele der anderen Antworten legen ein Script-Tag innerhalb eines Script-Tags. Ich mag deine Antwort besser. Mein einziger Vorschlag wäre, den Typ von jQuery nicht zu überprüfen und einfach mit undefined zu vergleichen. '' if (jQuery == undefined) '' –

+0

Tough undefined ist möglicherweise nicht undefiniert, wenn undefined in einem Code oben definiert wurde. Aber tu was immer du für das Beste hältst. – noob

0

Wenn Sie wollen, es zu tun mit PHP, was ich denke, ist besser, Sie können dies tun

  • Bevor Sie die Funktion load() aufrufen, erstellen Sie eine Variable wie:

    var load_script = 'nein';

  • Die Funktion load() benötigt einen optionalen Parameter, mit dem Sie Daten an den Server senden können. Verwenden Sie es, die load_script Variable posten Sie zuvor erstellt haben ähnliche

    $ ('# receiver_div') Last ('mypage.html', { 'load_script': load_script}., ​​Funktion (html) {

    // Sachen nach der Seite zu tun ist, Last

    })

  • Dann in der Seite, die Sie laden, den Wertansatz wie dieser

    fangen

    $ load_script = $ _POST ('load_script');

  • Dann können Sie ein tun, wenn Anweisung das Skript Sie dieses

ausschließen möchten if ($ load_script!= 'nein') {

echo "<script src="jquery.js"></script>";

}

Verwandte Themen