【问题标题】:IE8 What is tiggering beforeunload eventIE8 什么是触发 beforeunload 事件
【发布时间】:2013-02-21 06:21:00
【问题描述】:

我有一个问题,它只是 IE8 中的问题,去看看。

我有一个带有 onclick 属性的锚标记

<a href="javascript:void(0);" onclick="foo();">Click Me</a>

然后 foo 在别处声明:

<script type="javascript/text">
     function foo(){
       //do some work
       return false;
     }
</script>

调用 foo 后,我的 onbeforeunload 处理程序正在执行,我不知道为什么。

我有其他的例子,如果 foo 函数不返回 false,它会触发 IE 中的 beforeunload 事件,但即使这个函数返回 false,它仍然会命中我的 onbeforeunload 处理程序,我不知道为什么。

有什么方法可以找出触发它的原因。我已经在我的 onbeforeunload 处理程序中查看了事件对象,但它似乎没有给我和相关信息。

有什么想法吗?

【问题讨论】:

    标签: javascript internet-explorer-8


    【解决方案1】:

    改成

    <a href="#" onclick="return foo();">Click Me</a>
    

    <a href="#" onclick="foo();return false;">Click Me</a>
    

    【讨论】:

    • 第二种方法有效。你能解释一下为什么这与在 foo 函数结束时返回 false 不同吗?
    • 返回 false 会取消点击事件,因此不会刷新或卸载文档。如果第一个不起作用,则意味着 foo 在某些情况下不会返回 false。
    【解决方案2】:
    【解决方案3】:

    我在 CK Editor 渲染的一些锚标记上也遇到了这个问题。通过将点击事件附加到围绕相关锚标记并阻止事件传播到窗口的 DIV 来修复:

    $('div.cke_form_fix').on('click', function(e){
        e.stopPropagation();
    });
    

    【讨论】:

      猜你喜欢
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      相关资源
      最近更新 更多