1

我遇到了跨浏览器本机事件与回调事件的问题。在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

+0

你能不能禁用该控件,然后让我

  • DIV当文档完成加载时?换句话说,如果您可以在页面加载之前处理点击,请勿在页面加载之前允许点击。 – 2009-08-03 16:08:14

  • +0

    同意但你如何对浏览器说:“不按照ahref,直到文件完成加载”?您可以使用JavaScript,但工程尚未开始。 – 2009-08-04 07:28:38

    +0

    我添加了一个演示: http://files.getdropbox.com/u/255810/Jalios/Demo/Shield/shield.html – 2009-08-04 08:39:25

    回答

    1

    我们在许多浏览器上对CMS进行了许多测试。

    的速度排序:

    1. JavaScript不能前执行非常快点击
    2. 的onclick = “返回false” 在大多数情况下
    3. 的JavaScript做2)的onLoad工作正常太慢但可以用足够多的作为屏蔽带来了其他的问题,是不是一个好的选择
    1

    你可以看看这个:

    jQuery有一个方便的小功能 启动你的JavaScript尽快 文档对象模型已准备就绪... 这发生在页面有 完成加载之前。

    $(document).ready(function(){ // 
    Your code here... 
    }); 
    

    via

    你也可以把一个大禁用DIV眼前的一切,而页面加载禁止点击,但我不会推荐它。

    不知道如果我得到你的问题吧,让我知道,如果我不

    -1

    好像你手上有东西不错,和所有你希望做的是创造一些链接里面做什么都没有在优美退化是不可能的地区。

    在这种情况下,我建议使用以下格式的链接:

    <a href="javascript:void(0);">Linktext</a> 
    

    这个环节应该做的功能启用JavaScript或禁用绝对没有。

    重要事项

    1. 在虚空数字0是绝对必要的。否则,Internet Explorer将会投诉。
    2. 使用“javascript:void(0);”微软非常沮丧,因为奇怪的事情可能会发生。为了避免大部分错误,请不要在void(0)链接中包含任何文本。
    3. 在作出决定之前,请务必仔细考虑是否添加“javascript:void(0);”是一个比添加返回false的onclick更好的解决方案。

    在取出href属性:

    从链接中删除href属性是有效的XHTML。尽管是有效的XHTML,您的链接将失去其自动链接样式。没有更多的下划线,没有更多的颜色,没有更多的悬停,并且没有更多的自动颜色变化,如果链接被访问。

    无法修复缺少CSS样式,这可能是由于以下方面的不确定性支持:在Internet Explorer中悬停。

    相关问题