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; };
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] || ''; };
[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; } } };
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.