Heim >Web-Frontend >js-Tutorial >JS ruft den absoluten Pfad der aktuellen Skriptdatei_javascript-Tipps ab

JS ruft den absoluten Pfad der aktuellen Skriptdatei_javascript-Tipps ab

WBOY
WBOYOriginal
2016-05-16 15:12:212525Durchsuche

Beim Schreiben eines Modulladers ist es ein wesentlicher Schritt, den absoluten Pfad der aktuellen Skriptdatei als Basispfad zu ermitteln. Lassen Sie uns dieses Problem gemeinsam besprechen!

1. Implementierungsmethoden der wichtigsten Browser    

[a]. Chrome und FF

Ein supereinfacher Satz reicht!

var getCurrAbsPath = function(){
 return document.currentScript.src;
};

Hier wird das Objekt document.currentScript verwendet, das das aktuell ausgeführte Skriptelement zurückgibt. Anschließend kann der absolute Pfad der Skriptdatei durch Aufrufen des src-Attributs des Skriptelements ermittelt werden.

[b]. IE10+, Safari und Opera9

Verwenden Sie das Stack-Attribut (IE10+), das SourceURL-Attribut (Safari) und das Stacktrace-Attribut (Opera9) des Error-Objekts, um den absoluten Pfad zu extrahieren

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

Durchlaufen Sie die Skript-Tags im Dokument

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. Einführung in relevantes Wissen             

Der readyState des Skripts unter IE5.5~9 gibt den Status des Skriptelements an, das die folgenden Statuswerte hat:

nicht initialisiert: nicht initialisiert

Laden: Laden

geladen: Laden abgeschlossen

interaktiv: ausführen

abgeschlossen: Ausführung abgeschlossen

Sie können Zustandsänderungen von Skriptelementen abhören, indem Sie das Ereignis onreadystatechange abonnieren. Aber leider erscheinen die geladenen und abgeschlossenen Zustände in einer unsicheren Reihenfolge und es kann sein, dass nur einer von ihnen erscheint. Daher wird empfohlen, dass Sie beim dynamischen Hinzufügen eines Skriptelements zuerst das src-Attribut festlegen und dann das Skriptelement zum DOM-Baum hinzufügen , sodass in den geladenen und vollständigen Zuständen nur einer von ihnen angezeigt wird (obwohl welcher bei jeder Anforderung angezeigt wird), was einfacher zu überwachen ist.

3. Ein anderer Weg unter IE und FF      

Durch das Abonnieren des window.onerror-Ereignisses akzeptiert die Event-Handler-Funktion drei Parameter, nämlich msg, url und num. Die URL hier ist der absolute Pfad des aktuellen Skripts.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn