我遇到了跨浏览器本机事件与回调事件的问题。在dom之前处理浏览器本机点击:已加载
我有一个HTML链接“Click Me”,给定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>
它适用于滞后而不是快速点击。而且我不喜欢这种转左右,因为我的目标是在所有<a href="">
问候删除onclick
你能不能禁用该控件,然后让我
同意但你如何对浏览器说:“不按照ahref,直到文件完成加载”?您可以使用JavaScript,但工程尚未开始。 – 2009-08-04 07:28:38
我添加了一个演示: http://files.getdropbox.com/u/255810/Jalios/Demo/Shield/shield.html – 2009-08-04 08:39:25