IE input.value при обновлении страницы - PullRequest
1 голос
/ 16 сентября 2010

Запустите это в IE 7,8 или 9.

<!DOCTYPE html>
<html>
<head>
    <meta charset=utf-8>
    <title>IE input value</title>
</head>
<body>
    <form action="">
        <input id="test" type="text" name="username">
    </form>
    <script>
        var input = document.getElementById("test");
        alert(input.value);
        setTimeout(function() {

            alert(input.value);
        }, 2000);
    </script>
</body>
</html>

Если вы вводите значение вручную, затем нажимаете «обновить», первое предупреждение пусто, второе оповещает, что вы набрали, так чтоПохоже, что IE "немного заполняет" поле снова.

Вопрос : кто-нибудь еще испытывает это, и если да, то есть ли лучший способ, чем использовать setTimeout здесь?

Кстати: Firefox предупреждает о том, что вы напечатали два раза (как я и ожидал).

1 Ответ

1 голос
/ 16 сентября 2010

Да, это известное поведение IE.

К сожалению, браузеры реализуют память значений формы по-разному:

  • Mozilla и WebKit заменяют значение HTML на запомненное значение, как толькоэлемент загружен в документ;
  • IE заменяет значение, когда содержимое документа полностью загружено;
  • Opera заменяет значение только через после загрузки содержимого документа, возможно, послесобытие load срабатывает при window.

(Существуют также различия в браузерах относительно того, при каких обстоятельствах перезагрузка вызывает запоминание полей формы, а браузеры с bfcache приводят к тому, что память полей уменьшаетсяпоскольку больше переходов назад / вперед обходят перезагрузку страницы.)

Обостряет это, что означает, что если вы хотите написать скрипт, который проверяет значения форм и обновляет содержимое страницы, зависящее от них надежно , вы должнызапланируйте тайм-аут на 0 задержек от window.onload - и, если вы хотите, чтобы он реагировал быстрее, чем onload, до этого времениоо (напримерсразу и / или на поллере).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...