Тэг <base> и window.location='...' Баг или фича?

  • Автор темы Автор темы zer0ne
  • Дата начала Дата начала

zer0ne

Guest
Тэг <base> и window.location='...' Баг или фича?

Столкнулся с багом (или фичей):
Допустим, есть страница http://www.some_domain.com/some_dir/some_page.php
Если в <head> этой страницы вставить <base href="http://www.some_domain.com" /> , то IE (6.0) и Firefox (1.0.1) на JS-код типа window.location='other_page.php' , реагируют именно так, как ожидается по логике вещей, т.е. открывают http://www.some_domain.com/some_dir/other_page.php , в то время как Опера (8.0) открывает http://www.some_domain.com/other_page.php т.е. отсчитывает относительную ссылку от <base>.
В других браузерах не тестировал.
Довольно неприятный баг (вряд ли фича). Нашел только один способ борьбы с этой лажей - абсолютные линки.

Может кто подскажет что-то более конструктивное?

З.Ы. PHP тут при том, что все это горе как раз посредством его и генерится.
 
Ы.З. PHP тут совершенно ни при чем.

А если делать все линки вида "/some_dir/some_page.php" - указывать путь от корня сайта?

И вообще, довольно странные инструкции ты, получается, даешь браузеру:
в теге <base> ты ему говоришь, что относительные линки нужно "считать" от http://www.some_domain.com, а в теге <a> ты указываешь относительный путь, но ожидаешь, что это он будет "считаться" относительно другой базы. По-моему, Opera в данном случае ведет себя как раз весьма предсказуемо и адекватно. Впрочем, это все так, навскидку. Надо бы обратиться к стандартам.
 
Вот что сбивает с толку:
смотрим MSDN:
BASE Element | BASE Object -
Specifies an explicit URL used to resolve links and references to external sources such as images and style sheets.
и тут же внизу приводится такой пример:
This example sets the base URL of the document to a reference folder. Internet Explorer uses the BASE element to resolve the link to http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/href_2.asp.
PHP:
<HEAD>
<BASE HREF="http://msdn.microsoft.com/workshop/author/dhtml/reference">
</HEAD>
<BODY>
Click <A HREF="properties/href_2.asp">here</A> to learn about the href property.
</BODY>

Вот и не понятно, <base> только для картинок и css или все же для всех типов файлов. Если для всех, то выходит сам же IE и не соблюдает этот стандарт (как и Firefox).
Вобщем бред.

З.Ы. А если подставлять в относительную ссылку еще и директорию то Опера работает правильно, а эти двое - нет, т.е. лепят к локальному пути еще и директорию, которая уже и так там (в пути) присутствует.
Фу, высказал.
 
Да, странное поведение...

У меня лично нет времени сейчас все это протестить, но если все дейсвительно так обстоит, может, стоит спросить у разработчиков FF и Opera (думаю, до мелкософтовских не достучаться, да и работа над IE6 вроде прекращена.)
 
Этот баг действительно имеет место быть. Причем его наличие разнится в различных броузерах и их версиях. Чтобы всегда нормально работало нужно писать полный URL (начиная с http).
 
Тогда такой вопрос:
снижается ли скорость загрузки страницы, если к ней обращаться через абсолютный URL ?
 
Нет не снижается. Абсолютный или относительный URL, это все вещи которые имеют место быть только на стороне клиента (в броузере). Веб серверу всегда будет посылаться абсолютный путь.
 
хм, вообще-то мог бы и сам догадаться, изучив заголовки :/

спасибо
 
Полукондуктор
Начинать с http вовсе необязательно. Достаточно пути от корня сервера -
/my/path/
 
Сверху