Kann ich den Domainnamen für href im HTML-Basistag weglassen?

8

Derzeit verwende ich auf meiner Website ein HTML-Basistag, um URLs in Ankertags zu verkürzen. Alle URLs auf meiner Website gehören zu einer Domain. Für eine 100% ige Konformität verwende ich eine absolute URL. zum Beispiel:

<base href="http://www.example.com/path/to/specialpage/">

Ich habe im Internet nachgesehen, ob ich das irgendwie verkürzen kann und ob es in Browsern funktioniert, die in den letzten 10 Jahren erfunden wurden. Ich wollte so etwas machen wie:

<base href="/path/to/specialpage/">

Meine Frage ist, wenn ich den obigen Code verwenden würde, würden große Browser wie Internet Explorer ausfallen? oder gibt es Fehler in großen Browsern mit Verkürzung dieses Tags? Ich möchte versuchen, den Domainnamen wegzulassen, aber meine Website funktioniert weiterhin mit jedem Browser, der in den letzten 10 Jahren erstellt wurde, auch wenn dies bedeutet, dass ein spezielles Tag für einen bestimmten Browser eingefügt wird. Vielleicht brauche ich Folgendes:

<!-- firefoxpatchID=1 -->
<base href="/path/to/specialpage/">
<!-- endfirefoxpatch -->

Was ist die Lösung hier? Könnte ich einfach davonkommen, die Domain wegzulassen, und jeder Browser würde sich freuen, oder muss ich bestimmten Browsern etwas Besonderes antun, um meiner Idee gerecht zu werden?

Mike
quelle

Antworten:

6

Nein. Die href muss auf eine absolute URI verweisen . Relativ ist für ein Basiselement nicht zulässig.

Dieses Attribut gibt einen absoluten URI an, der als Basis-URI zum Auflösen relativer URIs dient.

Der HTML5-Standard besagt in Bezug auf das href-Attribut von <base>:

Die Dokumentbasis-URL eines Dokumentobjekts ist die absolute URL

rauben
quelle
1
Sie müssen nicht absolut sein nach dieser : „Die Basis - URL im gesamten Dokument für relative URL - Adressen verwendet werden .... Absolute und relative URIs erlaubt“
Stephen Ostermiller
Die Angabe relativer URIs scheint eine Änderung in HTML5 zu sein. Die Spezifikation für HTML 4.01 besagt sicherlich, dass dies ein absoluter URI sein sollte. Dies könnte ein Problem für das OP sein, wenn es "10 Jahre" alte Browser unterstützen möchte?!
MrWhite
@StephenOstermiller Schauen wir uns stattdessen den Standard an, der besagt, dass die href eine "Dokument-URL" enthalten muss und eine Dokument-URL als "die absolute URL" definiert ist. Wenn es jetzt Unterschiede zu HTML 4.01 gibt , wie von w3dk hervorgehoben, dann weiß ich es nicht und habe mich nicht darum gekümmert, es zu suchen.
Rob
1
Ich denke, Sie müssen das Dokument etwas weiter lesen ... "Die Dokumentbasis-URL eines Dokumentobjekts ist die absolute URL, die durch Ausführen dieser Unterschritte erhalten wird: " ... "Die Dokumentbasis-URL ist die eingefrorene Basis-URL der ersten Basiselement im Dokument, das ein href-Attribut hat ". Leider scheint das WhatWG-Dokument nicht weiter zu erklären (zumindest der interne Link für "eingefrorene Basis-URL" hat keinen Endpunkt).
MrWhite
1
Aber die Spezifikation bei w3.org nicht erklärt weiter: „Um die Set gefrorene Basis - URL , löst den Wert des href Attribut content relativ des Elements auf das Ausweich Basis - URL des Dokuments, wenn dies erfolgreich ist , setzt die gefrorene Basis - URL an den resultierenden absoluten URL ". Die "Fallback-Basis-URL des Dokuments" ist im Grunde die absolute URL des aktuellen Dokuments. Es ist ein bisschen wortreich, aber ich verstehe das so, dass Sie jetzt relative URLs im BASE-Element verwenden können. Daraus würde dann die entsprechende absolute URL aufgelöst.
MrWhite