1

这段代码有什么问题?它适用于 IE 和 FireFox,但 Chrome 不起作用。这个想法是函数 fnTimeOut 将在 onmousemove 后 5 秒内触发(fnTimeOut 附加在文档的 onmousemove 中)。没关系。但是,当我在 Chrome 中单击“确定”按钮时,fnAlert 会立即触发。它应该在我移动鼠标后 5 秒内拍摄……请帮帮我。


<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

4 回答 4

1

我肯定错过了什么。您的按钮有一个 onclick 表示显示一个警告框。那里没有代码试图延迟该警报。

我不知道究竟 FF 和 IE 在单击按钮时如何不会立即显示警报。

如果您希望在鼠标移动或单击按钮后 5 秒调用 fnAlert,则应将按钮上的 onclick 设置为“fnTimeOut()”

于 2010-04-05T14:19:47.893 回答
1

据我所知,警报和确认语句确实重置了 settimeout 计时器,这导致在刷新时立即执行给定代码。

我自己没有尝试过,但也许您可以通过 null 或随机变量语句来确认修改点击的内容(当前为警报)?

于 2011-05-23T12:19:50.513 回答
0

每次鼠标在文档上移动时都会触发 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>
于 2010-04-12T14:36:50.827 回答
-1

同样的问题,我认为是Chrome浏览器的错误......在chrome 8 + Win XP中;这是错的; 但是Chrome 10 + WinXp 没问题;而chrome 18又错了……但它不会在某些操作系统(例如Linux……)上重新出现。有人说这不是浏览器错误,而是操作系统甚至硬件错误。

在我的代码中,我使用“onmouseover”/“onmouseout”来替换“onmousemove”。现在看起来还可以。

但是,在文档元素 mouseOVER 中很难......

于 2012-05-08T03:57:26.900 回答