Javascript 在dom:加载之前处理浏览器本机单击
我对跨浏览器本机事件与回调事件存在问题 我有一个带有给定Javascript 在dom:加载之前处理浏览器本机单击,javascript,onclick,cross-browser,prototypejs,dom-events,Javascript,Onclick,Cross Browser,Prototypejs,Dom Events,我对跨浏览器本机事件与回调事件存在问题 我有一个带有给定href=“”的HTML链接“单击我”。在dom:loaded上,我给这个链接附加了一个函数(用来做Ajax的事情) JavaScript代码在页面末尾加载,以遵循YSlow建议 问题: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
href=“”
的HTML链接“单击我”。在dom:loaded
上,我给这个链接附加了一个函数(用来做Ajax的事情)
JavaScript代码在页面末尾加载,以遵循YSlow建议
问题:
<!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>
如果你加载这个页面很快(按F5),然后点击链接,然后
- 未调用
警报()
- 随后是链接(重新加载页面)
<!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
,您可以查看以下内容:
JQuery有一个方便的小函数
尽快启动javascript
文档对象模型已准备就绪…
这发生在页面打开之前
装载完毕
你也可以在页面加载时在所有内容前面放置一个大的禁用div,以禁止点击,但我不建议这样做
不确定我是否正确回答了你的问题,如果我没有回答,请告诉我。你可以调查一下: JQuery有一个方便的小函数 尽快启动javascript 文档对象模型已准备就绪… 这发生在页面打开之前 装载完毕 你也可以在页面加载时在所有内容前面放置一个大的禁用div,以禁止点击,但我不建议这样做
不确定我是否正确回答了你的问题,如果我没有回答,请告诉我。看起来你手头的事情很好,你所要做的就是创建一些链接,这些链接在不可能进行优雅降级的地方毫无用处 在这些情况下,我建议使用以下格式的链接:
<a href="javascript:void(0);">Linktext</a>
在启用或禁用javascript的情况下,此链接在功能上完全不起任何作用
重要注意事项
由于Internet Explorer中对:hover的不稳定支持,你也无法用CSS修复样式的缺乏。看起来你手头有很多东西,你所要做的就是创建一些链接,这些链接在不可能进行优雅降级的领域中毫无用处 在这些情况下,我建议使用以下格式的链接:
<a href="javascript:void(0);">Linktext</a>
在启用或禁用javascript的情况下,此链接在功能上完全不起任何作用
重要注意事项
由于Internet Explorer中对:hover的零星支持,您也无法修复CSS样式的不足。我们已经在许多浏览器上对CMS进行了许多测试 按速度排序:
我们已经在很多浏览器上对CMS进行了很多测试 按速度排序:
您是否可以禁用该控件,然后在文档加载完成后启用它?换句话说,如果您可以在页面加载之前处理单击,则在页面加载之前不允许单击。同意,但您如何对浏览器说:“在文档加载完成之前不要遵循ahref”?你可以使用JavaScript,但引擎还没有启动。我添加了一个演示:你的目标是什么?要让链接在页面加载之前什么都不做,javascript会在哪一点接管?如果是,请删除href组件。你在寻找优雅的堕落吗?如果是这样的话,那么你的href应该完成与javascript操作相同的操作,所以在页面加载之前单击它应该不会有问题有时我会在JS代码+优雅降级中执行此操作有时我不能,需要链接什么也不做。如果我删除href组件,它是否有效?我以为它会成为锚?这就是为什么我经常看到href=“#”谢谢