Нажатие клавиши ввода в IE8 заставляет мое приложение перейти на страницу входа - PullRequest
1 голос
/ 26 октября 2011

У меня странная проблема с моим приложением GWT при работе в IE8. Если я нажимаю клавишу ввода в любом месте приложения, приложение действует так, как будто пользователь вышел из системы и пользователь возвращается на страницу входа.

Этого не происходит в Firefox, IE7 или IE8, работающих в режиме совместимости.

Тот факт, что я возвращаюсь на страницу входа, означает, что браузер потерял информацию о сеансе, выполняет запрос к серверу и затем перенаправляется на страницу входа.

Если я перехватываю событие keydown в виджете и вызываю warnDefault, это останавливает поведение.

Есть идеи, что может быть причиной этого?

1 Ответ

6 голосов
/ 26 октября 2011

Похоже, что в IE8, если вы не укажете тип кнопки, кнопка будет создана как кнопка отправки.В ФФ это не так.Стандарт HTML4 гласит, что если тип кнопки не указан, то по умолчанию он должен быть кнопкой отправки (+1 для IE!)

В IE8, если вы помещаете кнопку отправки на страницу, IE8, кажется, создает псевдо /скрытый / секретный компонент формы на уровне документа.

Теперь, если вы поместите какие-либо другие компоненты на страницу, они будут обрабатываться так, как если бы они принадлежали форме, и нажатие клавиши ввода в этом компоненте вызовет событие click наКнопка отправки.

Такое поведение можно продемонстрировать на следующем простом HTML.

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>IE8 Test</title>
</head>

<body>

<button id="b2" type="button" value="button">Button type</button>

<button id="b1">No type</button>

<button id="b3" type="submit" value="submit">Submit type</button>

<input type="text" value="text!">

<script>
    document.getElementById('b1').onclick = function (e) {
        alert("You Clicked Button Number 1");
    };

    document.getElementById('b2').onclick = function (e) {
        alert("You Clicked Button Number 2");
    };

    document.getElementById('b3').onclick = function (e) {
        alert("You Clicked Button Number 3");
    };

</script>
</body>
</html>

Мое исправление состоит в том, чтобы просто указать тип кнопки в файле GWT ui.xml как type = "button».Это соответствует стандарту HTML4, который рекомендует всегда указывать тип кнопки для обеспечения совместимости во всех браузерах.

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