Могу ли я опустить доменное имя для href в базовом теге HTML?


8

В настоящее время на моем веб-сайте я использую базовый тег HTML для сокращения URL-адресов в тегах привязки. Все URL на моем сайте принадлежат одному домену. Для 100% соответствия я использую абсолютный URL. например:

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

Я заглянул в интернет, чтобы посмотреть, смогу ли я как-нибудь сократить это и по-прежнему работать в браузерах, изобретенных за последние 10 лет. Я хотел сделать что-то вроде:

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

Мой вопрос: если бы я использовал приведенный выше код, сломались бы основные браузеры, такие как Internet Explorer? или есть ошибки в основных браузерах с укорочением этого тега? Я хочу попытаться опустить доменное имя, но сделать так, чтобы мой сайт продолжал работать со всеми браузерами, созданными за последние 10 лет, даже если это означает включение специального тега для конкретного браузера, возможно, мне нужно что-то вроде:

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

Какое решение здесь? Могу ли я просто отказаться от пропуска домена, и каждый браузер будет счастлив или мне нужно сделать что-то особенное для определенных браузеров, чтобы соответствовать моей идее?

Ответы:


6

Нет . Href должен указывать на абсолютный URI . Относительный не допускается для базового элемента.

Этот атрибут указывает абсолютный URI, который действует как базовый URI для разрешения относительных URI.

Стандарт HTML5 говорит в отношении атрибута href <base>:

Базовый URL документа для объекта Document является абсолютным URL


1
Они не должны быть абсолютными в соответствии с этим : «Базовый URL-адрес, который будет использоваться по всему документу для относительных URL-адресов .... Допускаются абсолютные и относительные URI».
Стивен Остермиллер

Возможность указывать относительные URI кажется изменением в HTML5. Спецификация для HTML 4.01 определенно утверждает, что это должен быть абсолютный URI. Это может быть проблемой для ОП, если они хотят поддерживать "10-летние" браузеры ?!
MrWhite

@StephenOstermiller Хорошо, давайте вместо этого посмотрим на стандарт, в котором указывается, что href должен содержать «URL документа», а URL документа определяется как «абсолютный URL». Если сейчас есть различия по сравнению с HTML 4.01 , как указывает w3dk, то я не знаю и не потрудился посмотреть.
Роб

1
Я думаю, вам нужно прочитать документ немного подробнее ... "Базовый URL документа для объекта Document - это абсолютный URL, полученный при выполнении этих подэтапов: " ... "Базовый URL документа - это замороженный базовый URL первого базовый элемент в документе, имеющий атрибут href ". К сожалению, документ WhatWG, по-видимому, не объясняет дальше (по крайней мере, внутренняя ссылка для «замороженного базового URL» не имеет конечной точки).
MrWhite

1
Но спецификация на w3.org объясняет далее: «Чтобы установить замороженный базовый URL-адрес , разрешите значение атрибута содержимого href элемента относительно резервного базового URL-адреса документа; в случае успеха установите замороженный базовый URL-адрес в результирующий абсолютный URL». «Резервный базовый URL-адрес документа» - это, по сути, абсолютный URL-адрес текущего документа. Это немного многословно, но я понимаю, что теперь вы можете использовать относительные URL в элементе BASE. Соответствующий абсолютный URL будет затем разрешен из этого.
MrWhite
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.