Каждый другой щелчок по ссылке в Internet Explorer не работает - PullRequest
4 голосов
/ 10 июня 2011

Я заметил, что при нажатии на ссылку в IE, в которой для href задана функция javascript, первый щелчок будет работать, а второй - иногда нет. Третий будет работать, а четвертый - нет. Другими словами, IE будет запускать функцию javascript только при каждом нажатии. Если вы установите длинную паузу между нажатиями, она будет запускать функцию каждый раз. Но если вы нажмете немного быстрее, он будет пропускать каждый второй щелчок. Кто-нибудь еще заметил это поведение? Я не получаю такого же поведения в Firefox.

Вот пример кода:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Test</title>
        <script type="text/javascript">
        var count = 0;
        function doClick()
        {
            count++;
            document.frm.COUNTER.value = count;
        }
    </script>
</head>
<body>
    <form name="frm" action="">
        <input name="COUNTER" value="0"/>
        <a href="javascript:doClick();">Click Here</a>
    </form>
</body>
</html>

Нажмите очень медленно, и счетчик будет увеличиваться каждый раз. Нажмите даже в умеренно более быстром темпе, и он пропускает щелчки. Это также происходит с событиями onclick и onmousedown элементов управления в IE6 / 7 / 8.

Причина, по которой это является проблемой, заключается в том, что приложение представляет собой систему Point of Sale, и мы реализуем экранные клавиши для сенсорного экрана. Потребность нажимать ссылку / кнопку / клавишу более одного раза, потому что вы печатаете слишком быстро, недопустима.

Ответы [ 2 ]

4 голосов
/ 10 июня 2011

Вы, вероятно, испытываете события двойного щелчка вместо этого.

<a href="" onclick="doClick();return false;" ondblclick="doClick();return false;">

Это должно сработать.

2 голосов
/ 10 июня 2011

Насколько я могу судить, обработчики событий IE кажутся медленнее, чем другие браузеры.

http://jsfiddle.net/F5B54/

Я проверял это в Firefox, Chrome и IE8.IE определенно работал медленнее / пропущенные клики.

У меня не установлен IE9, но он должен быть лучше, чем IE8.

--- Обновленный ответ ---

IE обрабатывает onclick и dblclick отдельно.Это означает, что если вы нажмете два раза быстро, это будет зарегистрировано как одно событие dblclick.

С другой стороны, Chrome зарегистрирует 2 события onclick И событие нажатия dbl.

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

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