Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программное обеспечение > FF: перезагрузка страницы при встрече <img src="">


Автор: Dima 2015 18.2.2009, 13:39
Добрый день.

Не могу сказать что тема относится к РНР, но обнаружил я сее действо именно когда писал сайт на нем. Не могу сказать также, что у меня есть какие-то вопросы или проблемы, скорее просто недоумение... И вот хочу просто поделиться увиденным. Итак...

Пущай есть 2 скрипта:

1.
Код

<?php
$fp = fopen('C:/count.txt', 'a+');
fwrite($fp, microtime(true) . "\n");
?>


2.
Код

<?php
$fp = fopen('C:/count.txt', 'a+');
fwrite($fp, microtime(true) . "\n");
echo '<img src="">';
?>


Предлагается запустить 1й, потом руками очистить (или вообще удалить) файл C:/count.txt, и затем запустить 2й. Браузер, подчеркиваю, firefox. Скрипт делает простейшую вещь - пишет строки в файл. По числу строк можно увидеть сколько раз отработал скрипт. Так вот, каково же было мое изумление, когда я увидел, что 2й скрипт отрабатывает 2 раза... Видимо когда Лис встречает пустой атрибут src у тега img, он перезагружает страницу 1 раз, авось чего отыщется : ))

Повторюсь, мне в общем то нечего спросить, просто хотел поделиться... Может кто тоже об этом знает, и скажет "дык это ж известный прикол, ты не открыл америку"... Просто я 1.5 часа потратил на то, чтоб найти, в каком же месте у меня скрипт 2й раз отрабатывает, и уж естественно на такое подумать не мог. А скрипт запутанный, с кучей подключенных классов... в общем гадская штука вышла.

Автор: skyboy 18.2.2009, 14:07
дык, это известный прикол.
атрибут src, так же, как, скажем, атрибут href в <a> - это URL. который бывает относительный и абсолютный.
Абсолютный - когда задается протокол, домен и путь в пределах домена. 
Относительный - когда задается только путь относительно корневого каталога домена или значения <base>.
<img src="/images/image.gif"> - тут используется относительный URL. 
src="" - тоже относительный URL. Который, за отсутствием указаний, совпадают с адресом сайта или значением <base>.
Т.е. на сайте http://google.com код <img src=""> будет эквивалентен <img src="http://google.com">.
А вот как браузер поведет себя, когда при попытке получить содержимое картинки получит в ответ "HTTP/1.0 200 OK"(ресурс существует и доступен), а затем получит Content-Type: text/html вместо image/*, неизвестно.
Firefox вот, видимо, просто переходит по указанному адресу. Что для тебя выглядит как "загрузка страницы дважды". Кто-то другой выводит "картинка отсутствует". Возможны и другие варианты.

Автор: Dima 2015 18.2.2009, 14:22
Отано как оказывается smile

Не очень понятно, почему же тогда ФФ вообще не зацикливается...

Добавлено через 23 секунды
Ну то есть, почему только 1 раз переходит, умный такой?

Автор: skyboy 18.2.2009, 14:23
ты хотел бы получить бесконечный цикл? 0_о

Автор: Dima 2015 18.2.2009, 14:28
skyboy, нет конечно, не хотел бы : )))

Автор: Любитель 19.2.2009, 14:23
Цитата(Dima 2015 @  18.2.2009,  14:22 Найти цитируемый пост)

Не очень понятно, почему же тогда ФФ вообще не зацикливается...

Потому что он не перезагружает страницу. Он:
1. Делает запрос для страницы. Получает html, всё нормально.
2. Делает запрос (с точки зрения сервера такой же) дял картинки получает text/html, т. е. явно не картинку и потому, конечно ничего не отображает.

Все.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)