OnmouseMove не работает с SetTimeOut и оповещениями в Chome - PullRequest
1 голос
/ 05 апреля 2010

Что не так с этим кодом? Это работает в IE и FireFox, но Chrome не работает. Идея состоит в том, что функция fnTimeOut будет запущена через 5 секунд после onmousemove (fnTimeOut был присоединен в onmousemove в документе). Все нормально. Но когда в Chrome я нажимаю кнопку «ОК», функция fnAlert запускается мгновенно. Его нужно выстрелить всего через 5 секунд после того, как я переместил мышь ... помогите мне, пожалуйста.

<code>
<input type="button" onclick="alert(1);" value="ok">

<script>

document.onmousemove = fnTimeOut;

var t = null;

function fnAlert()
{
    alert(2);
}

function fnTimeOut()
{
    clearTimeout( t );
    t = setTimeout( fnAlert, 5000 );
}
</script>

Ответы [ 4 ]

1 голос
/ 23 мая 2011

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

Я сам не пробовал, но, может быть, вы могли бы подтвердить это, изменив содержание клика (в настоящее время оповещение) с помощью оператора нулевой или случайной переменной?

1 голос
/ 05 апреля 2010

Я должен что-то упустить. У вашей кнопки есть щелчок, который говорит, чтобы показать окно предупреждения. Там нет кода, пытающегося отложить это предупреждение.

Я не могу понять, как FF и IE не отображают предупреждение сразу при нажатии кнопки.

Если вы хотите, чтобы fnAlert вызывался через 5 секунд после перемещения мыши или нажатия кнопки, вы должны установить его на кнопку на "fnTimeOut ()"

0 голосов
/ 08 мая 2012

Тот же вопрос, я думаю, что это ошибка браузера Chrome ... В Chrome 8 + Win XP; это не правильно; Но Chrome 10 + WinXp в порядке; и chrome 18 опять не так …… но он НЕ появляется снова на некоторых ОС (таких как Linux…). Кто-то говорит, что Это не ошибка браузера, а ОС или даже аппаратная ошибка.

В моем коде я использую «onmouseover» / «onmouseout» для замены «onmousemove». Теперь все в порядке.

НО, в документе элемент mouseOVER сложный ...

0 голосов
/ 12 апреля 2010

onmousemove срабатывает при каждом перемещении мыши над документом, поэтому предупреждение отображается только после того, как мышь перестает двигаться.

Говоря, что на моей установке Chrome все работало нормально, это следующий код.

<html>
<head>
  <script>

  document.onmousemove = fnTimeOut;

  var t = null;

  function fnAlert()
  {
      alert(2);
  }

  function fnTimeOut()
  {
      clearTimeout( t );
      t = setTimeout( fnAlert, 5000 );
  }
  </script>


</head>
<body></body>

</html>
...