Detaillierte Erklärung zur Verwendung des Basis-Tags in HTML

Detaillierte Erklärung zur Verwendung des Basis-Tags in HTML

In requireJS gibt es eine Eigenschaft namens baseURL. Durch Festlegen der baseURL können wir den zu ladenden Dateipfad relativ zum Projekt anstelle der aktuellen Seite schreiben.

Beispiel: Angenommen, unser Projektverzeichnis ist /myproject/ und es befinden sich zwei Seiten darin, eine ist /myproject/one.html, die andere ist /myproject/html/other.html, und beide müssen /myproject/js/some.js laden. Wenn wir die Basis-URL auf /myproject/ setzen, können beim Laden des JS beide Seiten den Pfad ./js/some relativ zum Projekt verwenden, anstatt aufgrund unterschiedlicher Seitenpfade unterschiedliche relative Pfade zu verwenden.

Aber können wir eine ähnliche Funktionalität wie baseURL erreichen, wenn wir requireJS nicht verwenden?

Basis-Tag
Tatsächlich gibt es in HTML ein Basis-Tag, das ähnliche Funktionen erzeugen kann. Zum Beispiel:

Code kopieren
Der Code lautet wie folgt:

<html>
<Kopf>
<base href="http://static.cnblogs.com/" />
</Kopf>
<Text>
<img src="./images/logo_gray.gif" />
</body>
</html>

Wir werden feststellen, dass das Bild, das wir mit dem relativen Pfad ./images/logo_gray.gif geladen haben, zum Bild http://static.cnblogs.com/images/logo_gray.gif wird.

Das Basis-Tag kann dem Link der Seite einen Standardpfad oder eine Standardöffnungsmethode hinzufügen.

Hier ist ein Beispiel zum Festlegen der Standardöffnungsmethode:

Code kopieren
Der Code lautet wie folgt:

<html>
<Kopf>
<base target="_blank" />
</Kopf></p> <p><Körper>
<a href="http://www.cnblogs.com">Diese Seite wird in einem neuen Fenster geöffnet</a>
<a href="http://justany.cnblogs.com">Diese Seite wird auch in einem neuen Fenster geöffnet</a>
</body>
</html>

Ein Fehler
Den Basistag sollte man am besten nicht dynamisch schreiben, da es sonst zu kleinen Bugs in Firefox und IE kommt, wie beispielsweise bei der Seite http://localhost/static/test.html:

Code kopieren
Der Code lautet wie folgt:

<html>
<Kopf>
<Skript>
Dokument.schreiben('<base href="http://localhost/" />');
</Skript>
</Kopf></p> <p><Körper>
<img src="static/1.jpg" />
</body>
</html>

Firefox und IE laden zuerst http://localhost/static/static/1.jpg und dann http://localhost/static/1.jpg. Das heißt, sie alle versuchen, es zuerst mit einem Pfad relativ zur aktuellen Seite zu laden und es dann mit dem durch das Basis-Tag festgelegten Standardpfad zu laden.

Chrome wird problemlos geladen.

Firefox wird nicht richtig geladen.

Warum?

Wir haben dafür keine gute Erklärung gefunden. Unsere Analyse ist, dass der Browser das Laden von Ressourcen optimiert, was dazu führt, dass der Browser Ressourcen vorlädt, wenn das dynamisch eingefügte Basis-Tag nicht wirksam wird. Infolgedessen tritt ein Fehler auf, und dann wird das Basis-Tag wirksam und lädt die richtige Ressource.

Wie kann man es vermeiden? Es tritt kein Problem auf, wenn Sie das Basis-Tag nicht dynamisch schreiben. Wenn Sie das Basis-Tag dynamisch schreiben müssen, müssen alle von der Seite referenzierten externen Ressourcen dynamisch über Javascript geladen werden.

<<:  Detaillierte Erklärung der Vuex-Umgebung

>>:  Navicat-Verbindung MySQL Fehlerbeschreibungsanalyse

Artikel empfehlen

Erste Schritte mit SELinux

Bereits zu Kernel 2.6-Zeiten wurde ein neues Sich...

Installations-Tutorial für die komprimierte Version von MySQL 5.7.18 Archiv

In diesem Artikel wird die spezifische Methode zu...

Einführung in die neuen Funktionen von ECMAscript

Inhaltsverzeichnis 1. Standardwerte für Funktions...

Lösungen für den Fehler und die Ungültigkeit beim Öffnen von nginx.pid

Inhaltsverzeichnis 1. Problembeschreibung 2. Prob...

Vue+el-table realisiert das Zusammenführen von Zellen

In diesem Artikelbeispiel wird der spezifische Co...

Lösung für den Fehler, dass IE6 select nicht durch div abgedeckt werden kann

Verwenden Sie div, um eine Maske zu erstellen oder...

Realisieren Sie einen super coolen Wasserlichteffekt auf Leinwandbasis

In diesem Artikelbeispiel erfahren Sie den spezif...

MySQL-Transaktions-Tutorial Yii2.0 Händler-Auszahlungsfunktion

Vorwort Ich bin ein PHP-Programmierer, der als Pr...

So erhalten Sie Datums-/Uhrzeitdaten in MySQL, gefolgt von .0

Der Datentyp von MySQL ist datetime. Die in der D...

vue + springboot realisiert die Login-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Auszeichnungssprache - Phrasenelemente

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

Horizontales Header-Menü mit CSS3 implementiert

Ergebnis:Implementierungscode html <nav class=...