链接到锚(ajax url)不会调用onBeforeUnload

时间:2012-03-26 14:31:45

标签: javascript jquery

我有一个onbeforeunload事件:

$().ready(function() { 
  window.onbeforeunload=function() { return "haha" };
});

我的链接就像这样(ajax网站):

<a href="#pageX" /> 

但是永远不会调用onbeforeunload。我该怎么办?

由于

3 个答案:

答案 0 :(得分:1)

别误会我的意思,但你是认真的吗?

该链接仅引用哈希标记,因此,它不会离开当前网站,也不会调用onbeforeunloadunload

如果有任何* click事件处理程序bound to that anchor aswell, there must be something in the event handler code which really forces the current site to get unloaded ( location.href`,例如)。

如果你只是通过Ajax切换HTML,那么也没有onbeforeunload

您可以将处理程序绑定到onhashchange事件(检查浏览器兼容性),但这会触发您的网址/哈希中发生的任何更改。

答案 1 :(得分:1)

您可能正在寻找onhashchange事件: https://developer.mozilla.org/en/DOM/window.onhashchange

答案 2 :(得分:1)

我猜是因为你试图绑定到onbeforeunload并返回一个字符串,你希望在AJAX网站上为用户提供“你确定要离开这个页面”对话框。

在这种情况下,您可能需要通过将单击处理程序绑定到链接上来稍微改变一下。因此,您可以在确认之前阻止哈希更改。

类似的东西:

$('a[href^="#"]').live('click',function(e){
    if( //should we be confirming first? ) {
        //put your confirmation code here either using default JS windows or your own CSS/jQueryUI dialog boxes
        // this code should either cache the url of the link that was clicked and manually update the location with it when the user confirms the dialog box (if you're using JQUI windows) or simply use JS confirmation boxes and based on the response, all you need to do is return; and the link click will handle normally
        e.preventDefault(); //prevent the link from changing the hash tag just yet
        e.stopImmediatePropagation(); //prevent any parent elements from firing any events for this click
    }
} );