Редактировать : Что мне действительно нужно знать, так это то, есть ли какое-либо событие javascript, которое надежно сработает, когда пользователь попадет на страницу с помощью кнопки назад. Я пробовал событие onload
для элемента body
, но оно не срабатывает в Firefox или Safari.
Я работаю со старым кодом, который пытается предотвратить двойную отправку данных формы, отключая все кнопки отправки формы, как только пользователь нажимает одну из них (прослушивая событие onSubmit формы). Этот код применяется ко всем формам в приложении, независимо от того, будет ли двойная отправка проблемой.
Проблема в том, что если пользователь нажимает кнопку «Назад» в Firefox или Safari, все кнопки отправки по-прежнему отключаются, когда он попадает на страницу. В Firefox они даже отключены после обновления (это будет делать только обновление Ctrl + F5)!
Я пытался прослушать событие body
onLoad
, но FF и Safari не запускают его, когда вы попадаете на страницу с помощью кнопки назад. (Интересно, что он запускается при мягком обновлении FF, даже если кнопка остается отключенной.)
Вот очень простой HTML-документ, который покажет, что я имею в виду:
<html><body>
<form name="theForm" id="theForm" action="test2.html"
onSubmit="document.theForm.theButton.disabled = true;">
<input id="theButton" type="submit" name="theButton" value="Click me!" />
</form>
</body></html>
Примечание. Я тестировал WinXP с IE8, FF3.5, Safari 4, Opera 9 и Chrome 2.0. Только Safari и FF оставляют кнопку отключенной, когда вы используете назад, чтобы добраться до них.