2012-04-29 20 views
7

Quiero incluir el jquery en el archivo, si no está incluido en la página. ¿Cómo puedo hacer esto?Incluir jQuery, si no está incluido ya

Escribí esto, pero está dando resultados no deseados.

<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

relacionadas: http://stackoverflow.com/questions/6787569/best-way-to-avoid-including-stylesheets-external-js-more-than-once-in-a- página –

Respuesta

11

no puedes hacer eso en PHP. Tal vez puedas probar

<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

Ese estilo de asignación de la mano de obra 'onload' corre el riesgo de ser escrito en exceso. ¡También se llama a 'document.write' después de que el evento' onload' se incendie y se destruya el documento existente! – Quentin

+0

Gracias. He editado mi código – Sethunath

+0

@Sethunath: Ni el código de su mina ni el mío están funcionando. Cuando ejecuto esto en una página, el final después de interno viene en la página ** '); } ** – Thompson

4

Tu PHP se ejecuta en el servidor y dar salida a un texto.

El navegador luego interpreta ese texto como HTML y JavaScript.

No puede ejecutar PHP en el servidor, en un documento que ya ha enviado al navegador, en respuesta a la lógica que se ejecuta en el navegador.

Usted necesita esto completamente en JavaScript o, más sensatamente, resolver la lógica del lado del servidor para que pueda rastrear si jQuery se ha incluido o no.

6

usted podría intentar el siguiente:

<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

Esta es una buena respuesta – Sethunath

+0

Muchas de las otras respuestas colocan un etiqueta de script dentro de una etiqueta de script Me gusta tu respuesta mejor. Mi única sugerencia sería no molestarme en comprobar el tipo de jQuery y simplemente compararlo con undefined. '' if (jQuery == undefined) '' –

+0

Tough undefined puede no estar indefinido si undefined ha sido redefinido en algún código anterior. Pero asegúrate de hacer lo que creas que es mejor. – noob

0

Si quiere hacerlo con PHP, que creo que es mejor, puede hacer esto

  • antes de llamar a la función load() crear una variable como:

    var load_script = 'no';

  • La función load() toma un parámetro opcional que puede usar para enviar datos al servidor. Utilizarlo para publicar la variable load_script creó anteriormente como éste

    $ ('# receiver_div') carga ('mipagina.html', { 'load_script': load_script}., ​​La función (html) {

    // cosas que hacer después de que la página se carga

    })

  • Luego, en la página que va a cargar, captura el valor publicado como esto

    $ load_script = $ _POST ('load_script');

  • A continuación, se puede hacer un if para excluir el guión que desee como esto

if ($ load_script!= 'no') {

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

}

Cuestiones relacionadas