2012-04-29 10 views
7

Desidero includere il file jquery nel file, se non è già incluso nella pagina. Come posso fare questo?Include jQuery, se non incluso già

Ho scritto questo, ma sta dando un risultato indesiderato.

<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

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

risposta

11

non puoi farlo in PHP. Prova a modificare la

<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

Questo stile di assegnamento "onload' hander rischia di essere sovrascritto. Chiamando anche 'document.write' dopo che gli eventi dell'evento' onload' cancellano il documento esistente! – Quentin

+0

Grazie. Ho modificato il mio codice – Sethunath

+0

@Sethunath: Né il tuo né il mio codice funzionano. Quando lo eseguo in una pagina, la fine dopo l'interno sta arrivando alla pagina ** '); } ** – Thompson

4

Il PHP è in esecuzione sul server e sta emettendo del testo.

Il browser quindi interpreta il testo come HTML e JavaScript.

Non è possibile eseguire PHP sul server, in un documento già inviato al browser, in risposta alla logica in esecuzione nel browser.

È necessario eseguire questa operazione completamente in JavaScript o, in modo più accurato, selezionare la logica lato server in modo da tenere traccia della presenza o meno di jQuery.

6

Si potrebbe provare il seguito:

<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

Questa è una buona risposta – Sethunath

+0

Molte delle altre risposte posizionano un tag di script all'interno di un tag di script. Mi piace la tua risposta meglio. Il mio unico suggerimento sarebbe di non preoccuparmi di controllare il tipo di jQuery e di confrontarlo con undefined. '' if (jQuery == undefined) '' –

+0

Undefined non definito potrebbe non essere indefinito se undefined non è stato ridefinito in qualche codice sopra. Ma certo fai tutto ciò che pensi sia meglio. – noob

0

Se si vuole fare con PHP, che credo sia meglio, si può fare questo

  • prima di chiamare la funzione load() creare una variabile come:

    var load_script = 'no';

  • la funzione load() accetta un parametro facoltativo che è possibile utilizzare per inviare dati al server. Usalo per inserire la variabile load_script creato in precedenza come questo

    $ ('# receiver_div') Carico ('mypage.html', { 'load_script': load_script}., ​​La funzione (html) {

    // cose da fare dopo che la pagina è carico

    })

  • Poi nella pagina che si sta caricando, prendere il valore di iscrizione in questo modo

    $ load_script = $ _POST ('load_script');

  • Poi si può fare un if per escludere lo script che si desidera in questo modo

if ($ load_script!= 'no') {

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

}

Problemi correlati