Можно ли использовать тег <base> для протокола?

URL-адреса, относящиеся к протоколу, позволяют включать ресурсы (изображения, CSS, JS) с использованием той же схемы (HTTP или HTTPS) в качестве исходного запроса, сохраняя при этом только одна копия кэшированной страницы. Затем пользовательский агент решает, использовать или не использовать HTTP или HTTPS (на основе URI страницы HTML).

Мы используем тег <base href=".." /> и относительные URL-адреса для ресурсов в HTML.

Пример:

<html>
<head>
  <base href="#" onclick="location.href='http://example.com'; return false;" />
  <script src="js/foo.js" type="text/javascript" />
</head>

Есть ли способ, которым я могу объединить это? URL-адреса, относящиеся к протоколу, в теге <base/>?

<base href="//example.com" />

Мои эксперименты esp. с Internet Explorer работал иногда, а иногда и нет (иногда даже ссылки меню не работали, иногда изображения CSS не загружались).

Есть ли что-нибудь, чтобы я мог заставить его работать или рекомендовать, если это хорошая идея? Мне не удалось найти информацию о таких сайтах, как caniuse.com.

Ответ 1

Мы просто попытались это сделать с помощью сайта, а искатель Google не понимал, как использовать относительный путь протокола в качестве базы, и мы закончили тем, что он индексировал многие сломанные URL-адреса.

Я не уверен, что использование относительного пути протокола здесь является допустимым значением для базового пути. Браузер, похоже, хорошо понимает относительную базу протокола, но может быть, что они просто более снисходительны к тому, что они будут принимать.

Ответ 2

Настройка javascript для меня работает:

<head>
    <script>
        var str = document.location.protocol + '//' + document.location.host + '/';
        document.write('<base href="'+str+'">');
    </script>
</head>