Maison > interface Web > js tutoriel > JS obtient le chemin absolu du script actuel file_javascript tips

JS obtient le chemin absolu du script actuel file_javascript tips

WBOY
Libérer: 2016-05-16 15:12:21
original
2529 Les gens l'ont consulté

Lors de l'écriture d'un chargeur de module, c'est une étape essentielle pour obtenir le chemin absolu du fichier script actuel comme chemin de base. Discutons de ce problème ensemble !

1. Méthodes de mise en œuvre des principaux navigateurs    

[a]. Chrome et FF

Une phrase super simple suffit !

var getCurrAbsPath = function(){
 return document.currentScript.src;
};
Copier après la connexion

L'objet document.currentScript est utilisé ici, qui renvoie l'élément de script actuellement exécuté ; puis le chemin absolu du fichier de script peut être obtenu en appelant l'attribut src de l'élément de script.

[b]. IE10+, Safari et Opera9

Utilisez l'attribut stack (IE10+), l'attribut sourceURL (Safari) et l'attribut stacktrace (Opera9) de l'objet Error pour extraire le chemin absolu

var getCurrAbsPath = function(){
  var a = {}, stack;
  try{
   a.b();
  }
  catch(e){
   stack = e.stack || e.sourceURL || e.stacktrace; 
  }
  var rExtractUri = /(?:http|https|file):\/\/.*?\/.+?.js/, 
    absPath = rExtractUri.exec(stack);
  return absPath[0] || '';
}; 

Copier après la connexion

[C] IE5.5~9

Parcourez les balises de script dans le document

var getCurrAbsPath = function(){
  var scripts = document.scripts;
  var isLt8 = ('' + document.querySelector).indexOf('[native code]') === -1;
  for (var i = scripts.length - 1, script; script = scripts[i--];){
    if (script.readyState === 'interative'){
     return isLt8 ? script.getAttribute('src', 4) : script.src;  
    }
  }
};
Copier après la connexion

2. Introduction aux connaissances pertinentes             

Le readyState du script sous IE5.5~9 indique l'état de l'élément de script, qui a les valeurs d'état suivantes :

non initialisé : non initialisé

Chargement : Chargement

chargé : Chargement terminé

interactif : exécution

complet : exécution terminée

Vous pouvez écouter les changements d'état des éléments de script en vous abonnant à l'événement onreadystatechange. Mais malheureusement, les états chargés et complets apparaissent dans un ordre incertain et un seul d'entre eux peut apparaître. Par conséquent, il est recommandé, lors de l'ajout dynamique d'un élément de script, de définir d'abord l'attribut src, puis d'ajouter l'élément de script à l'arborescence DOM. , de sorte que les états chargés et complets n'apparaissent qu'un seul d'entre eux (bien que celui-ci apparaisse à chaque fois qu'il est demandé), ce qui est plus facile à surveiller.

3. Une autre façon sous IE et FF      

En vous abonnant à l'événement window.onerror, la fonction de gestionnaire d'événements acceptera trois paramètres, à savoir msg, url et num. L'URL ici est le chemin absolu du script actuel.

Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal