118 votes

vérifie si jquery a été chargé, puis le charge si c'est faux

Quelqu'un sait-il comment vérifier si jquery a été chargé (avec javascript) puis le charger s'il ne l'a pas été.

quelque chose comme

if(!jQuery) {
    //load jquery file
}

1 votes

Merci pour l'info ! j'espère qu'il n'y aura jamais besoin de l'appeler. j'essayais juste d'ajouter un peu de redondance.

169voto

Daniel LeCheminant Points 28101

Peut-être quelque chose comme ça :

<script>
if(!window.jQuery)
{
   var script = document.createElement('script');
   script.type = "text/javascript";
   script.src = "path/to/jQuery";
   document.getElementsByTagName('head')[0].appendChild(script);
}
</script>

1 votes

@DanielLeCheminant bonne remarque à ce sujet. Et si c'était ( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( script );

3 votes

@Pawel J'ai vu certaines implémentations insérer l'élément avant/après la première balise script, puisque vous savez qu'il doit y en avoir une.

0 votes

Je pense que l'ajout d'une balise script au corps fonctionne dans tous les navigateurs.

110voto

Loren Points 558

Évitez d'utiliser des "if (!jQuery)" depuis IE renvoie l'erreur: jQuery est 'undefined'

Au lieu d'utilisation: if (typeof jQuery == 'undefined')

<script type="text/javascript">
if (typeof jQuery == 'undefined') {
    var script = document.createElement('script');
    script.type = "text/javascript";
    script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js";
    document.getElementsByTagName('head')[0].appendChild(script);
}
</script>

Vous aurez également besoin de vérifier si le JQuery est chargé après avoir ajouté à l'en-tête. Sinon, vous devrez attendre que la fenêtre.événement onload, qui est plus lent si la page a des images. Voici un exemple de script qui vérifie si le fichier JQuery n'est pas chargé, puisque vous n'avez pas la commodité d'être en mesure d'utiliser $(document).ready(function...

http://neighborhood.org/core/sample/jquery/append-to-head.htm

0 votes

W script.onload = function() { alert('jQuery loaded!'); } ?

14voto

miksiii Points 45

M

if (window.jQuery) {  
    // jQuery is loaded  
} else {
    // jQuery is not loaded
}

M

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded
} else {
    // jQuery is loaded
}

I

if (!window.jQuery) {
  var jq = document.createElement('script'); jq.type = 'text/javascript';
  // Path to jquery.js file, eg. Google hosted version
  jq.src = '/path-to-your/jquery.min.js';
  document.getElementsByTagName('head')[0].appendChild(jq);
}

10voto

Prasanth Bendra Points 9618

T

<script>
  window.jQuery || document.write('<script src="js/jquery.min.js"><\/script>')
</script>

T

R S

O

i h

function include_once (filename) {
  // http://kevin.vanzonneveld.net
  // +   original by: Legaev Andrey
  // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   improved by: Michael White (http://getsprink.com)
  // +      input by: Brett Zamir (http://brett-zamir.me)
  // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
  // -    depends on: include
  // %        note 1: Uses global: php_js to keep track of included files (though private static variable in namespaced version)
  // *     example 1: include_once('http://www.phpjs.org/js/phpjs/_supporters/pj_test_supportfile_2.js');
  // *     returns 1: true
  var cur_file = {};
  cur_file[this.window.location.href] = 1;

  // BEGIN STATIC
  try { // We can't try to access on window, since it might not exist in some environments, and if we use "this.window"
    //    we risk adding another copy if different window objects are associated with the namespaced object
    php_js_shared; // Will be private static variable in namespaced version or global in non-namespaced
    //   version since we wish to share this across all instances
  } catch (e) {
    php_js_shared = {};
  }
  // END STATIC
  if (!php_js_shared.includes) {
    php_js_shared.includes = cur_file;
  }
  if (!php_js_shared.includes[filename]) {
    if (this.include(filename)) {
      return true;
    }
  } else {
    return true;
  }
  return false;
}

2voto

chrisrth Points 1102

E

<script type="text/javascript">
if (typeof jQuery == 'undefined') {
  document.write('<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"><\/script>');        
  } 
</script>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X