Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erklärung zum Fehler im Pfad vonlaydate.js beim Laden vonlaydate.css

Ausführliche Erklärung zum Fehler im Pfad vonlaydate.js beim Laden vonlaydate.css

小云云
小云云Original
2017-12-27 14:01:134269Durchsuche

laydate.js ist ein Datums- und Uhrzeit-Plug-in aus der Javascript-Reihe und ist mit gängigen Browsern einschließlich IE6 kompatibel. Nachdem Laydate.js von Xianxin stark umgeschrieben wurde, wurde es immer leistungsfähiger und flexibler in der Verwendung, aber in einem Projekt, das auf Angular+ocLazyLoad basierte, ging etwas schief. Ich glaube, dass das Datums- und Zeitauswahl-Plug-in „laydate.js“ jedem bekannt ist. In diesem Artikel werden hauptsächlich die relevanten Informationen zur Lösung des Problems des Pfadfehlers beim Laden von „laydate.css“ vorgestellt Es ist im Detail anhand des Beispielcodes dargestellt, der für jeden sehr nützlich ist. Er hat einen gewissen Referenz- und Lernwert beim Lernen oder Arbeiten. Freunde, die ihn benötigen, können einen Blick darauf werfen.

Das Problem wurde gefunden

laydate.js wurde durch asynchrones Laden von ocLazyLoad eingeführt. Daher konnte die Datei „laydate.css“ nicht geladen werden, daher habe ich den Code geöffnet und stellte fest, dass es so geschrieben war:

getPath:function(){
 var e=document.scripts,
 t=e[e.length-1],
 n=t.src;
 if(!t.getAttribute("merge"))
 return n.substring(0,n.lastIndexOf("/")+1)
}()

Es muss zuerst der Pfad zulaydate.js ermittelt und dann der Abschnitt hinzugefügt werden vonlaydate.css zum endgültigen Zusammenfügen in einen vollständigen Pfad.

Die Idee des Autors zum Abrufen des Pfads vonlaydate.js lautet: Da der JS-Code zur Bestimmung des Pfads im Allgemeinen direkt in der JS-Datei anstelle der Funktion platziert wird, wird er ausgeführt Wenn die JS-Datei sofort geladen wird, beträgt die Anzahl der JS-Dateien, die beim Ausführen dieser Anweisung erhalten werden, genau e.length-1. Da die JS-Dateien hinter der Seite noch nicht geladen wurden, beträgt die Anzahl der erhaltenen JS-Dateien Es gibt nicht alle JS-Dateien auf der Seite. Auf diese Weise ist es nicht erforderlich, den Pfad zu durchlaufen, um den Pfad zu erhalten, und der Dateiname ist für die Dateibeurteilung nicht erforderlich, wodurch die Beurteilung genauer wird (e.length-1 ist immer die Datei selbst).

Diese Methode weist jedoch Mängel auf. Es ist kein Problem, sie direkt mit dem script-Tag in der HTML-Seite einzuführen '>< /script") oder document.createElement("script") dynamisches Laden oder asynchrones Laden, der erhaltene Pfad ist der Pfad der letzten js-Datei, nicht der Pfad der aktuellen js-Datei.

Dann dachte ich an document.currentScript, das in einem Schritt erledigt werden kann, aber es gibt bestimmte Kompatibilitätsprobleme.

var curSrc = document.currentScript.src;
return curSrc.substring(0,curSrc.lastIndexOf("/")+1);

Am Ende habe ich die folgende einfache und grobe Methode verwendet:

getPath:function(){
 var e=document.scripts, n;
 for(var i=e.length;i>0;i--){
 if(e[i-1].src.indexOf("laydate.js")>-1){
 n=e[i-1].src.substring(0,e[i-1].src.lastIndexOf("/")+1);
 }
 }
 return n;
}()

Die Idee dieser Methode ist sehr klar. Ermitteln Sie einfach das src-Attribut der referenzierten Datei anhand des Dateinamens und beurteilen und fangen Sie es ab. Diese Methode hat jedoch die folgenden zwei Nachteile:

1. Sie muss alle js-Dateien auf der Seite durchlaufen, was manchmal ineffizient sein kann. (Es gibt nicht viele js-Dateien auf meiner Seite, haha)

2. Wenn sich in verschiedenen Verzeichnissen auf der Seite js-Dateien mit demselben Namen befinden, ist die Beurteilung möglicherweise falsch.

Verwandte Empfehlungen:

js time plug-in_html/css_WEB-ITnose

Kombinierte Verwendung von JS-Ersatz und Time Plug -in Method_Javascript-Kenntnisse

Beispiel für die Verwendung des Eingabefeld-Auswahlzeit-Plugins, implementiert durch jQuery_jquery

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zum Fehler im Pfad vonlaydate.js beim Laden vonlaydate.css. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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