我对跨浏览器本机事件与回调事件有疑问。
我有一个带有给定href=""
. 我在dom:loaded
这个链接上附加了一个函数(做 Ajax Stuff)。
JavaScript 代码在页面末尾加载以遵循 YSlow 建议。
问题:
如果你加载这个页面真的很快(按 F5)然后点击链接然后
- 不
alert()
叫 - 链接被关注(重新加载页面)
当服务器滞后时会发生这种情况。实际上页面还没有完成加载,浏览器执行代码。
演示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<body>
<a href="#toolate" id="action">Click Me</a>
<!-- According to YSlow Recommandation load at the bottom -->
<script src="../js/lib/prototype.js" type="text/javascript" language="JavaScript"></script>
<script>
/* <![CDATA[ */
document.observe('dom:loaded', function() {
$('action').observe('click', function(event){ alert("click"); Event.stop(event); });
});
/* ]]> */
</script>
</body>
</html>
转身:
一个转身是添加onClick="return false;"
:
<a href="#toolate" id="action" onClick="return false;">Click Me</a>
它适用于滞后,但不适用于快速点击。而且我不喜欢这种转身,因为我的目标是消除onclick
所有<a href="">