Верстая очередную HTML страничку, случайно наткнулся на интересную особенность FireFox. Оказывается, при определенных манипуляциях (или положении звезд) в FireFox не будет срабатывать кнопка Submit (<input type=”submit” />).
Расскажу об этом поподробнее, с пошаговыми инструкциями
На то чтобы разобраться в чем проблема, было потрачено полторы сутки рабочего времени.
Итак, создаем простенькую HTML страничку:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test Page</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<form action="/login.php" method="post">
<p>
<label for="login">Login:</label>
<input name="login" />
</p>
<p>
<label for="password">Password:</label>
<input name="password" type="password" />
</p>
<p>
<input type="submit" value="Sign In" />
</p>
</form>
</body>
</html>
Открываем ее напрямую с жесткого диска.
Во всех основных браузерах (IE, Opera, Google Crome, Safari и FireFox), и пробуем нажать на кнопку “Sign In”. Почти во всех браузерах произойдет отправка данных формы методом post, на сценарий login.php. И только в одном FireFox этого не произойдет. При нажатии на Submit не произойдет перехода на сценарий указанный в атрибуте action тега form.
Долго пытаясь разобраться в чем же, собственно, проблема – я случайно убрал слэш из атрибута action:
<form action="login.php" method="post">
и, о радость, все заработало. Я был очень удивлен, но когда попробовал этот же файл (с начальным слэшем в атрибуте action) задеплоить на сервер и получить его уже оттуда, то оказалось, что при получении файла с сервера по протоколу http://, а не file:// — все работает правильно во всех браузерах, независимо от того есть слэш в начале или же он отсутствует.
Вот мне интересно – это бага или все же фича Firefox?

Form Submit не работает в FireFox | Генеральский чай...
Thank you for submitting this cool story — Trackback from progg.ru...
Багом это не является. Так и должно быть. Ставя слэш вы тем самым указываете браузеру что бы он перед ним поставил доменное имя сайта. А при протоколе file:// куда он должен его послать? Да и странно вообще отлаживать работу форм при протоколе file://, пришедшие данные не могут же быть обработаны. Просто разработчики других браузеров видимо включили обработку такой ситуации, а FireFox-а нет. Если интересно можете посмотреть как разные браузеры обрабатывают вот такой код Главная при протоколе file:// .
Код отобразился в виде ссылки((( Надо у тега a указать атрибут href="/".
@Островитянин
Собственно, я и не отлаживал работу с формами через протокол file://, изначально проблема была в другом, не работал определенный JavaScript метод, я начал упрощать разметку HTML и наткнулся на такое необычное поведение. Я так же прекрасно понимаю как работает протокол file и как http, просто странно было, что в остальных браузерах работает.