2011-03-07 29 views
2

我在JavaScript中设置:如何确定哪些控制window.onbeforeunload在javascript导致了事件

var onBeforeUnloadFired = false; 

window.onbeforeunload = function (sender, args) 

{ 
    if(window.event){ 
     if(!onBeforeUnloadFired) { 
     onBeforeUnloadFired = true; 
     window.event.returnValue = 'You will lose any unsaved changes!'; //IE 
     } 
    } 
    else { 
     return 'You will lose any unsaved changes!'; //FX 
    } 

    windows.setTimeout("ResetOnBeforeUnloadFired()", 1000); 
} 

function ResetOnBeforeUnloadFired() { 
    //Need this variable to prevent IE firing twice. 
    onBeforeUnloadFired = false; 
} 

我想实现当用户离开航行警告之前编辑屏幕。它工作正常,除非我得到弹出的按钮点击正常后发。我希望避免这一点,所以我想我是否可以确定哪个按钮被按下就可以工作。

有谁知道如何确定哪个按钮被按下在windows.onbeforeunload?

或者任何人都知道一个更好的方法来实现我的目标?

回答

2

通过投入更新面板编辑所有项目文本框等

现在windows.onbeforeunload外部该组件,仅火灾解决了这个。

2

另一种方法,如果你不能“控制”你所控制的深度,那就是标记一些“良好的控制”,那就是那些不应该触发离开导航逻辑的方法。 这是容易实现的设置一个全局JavaScript变量如

var isGoodLink=false; 
window.onbeforeunload = function (e) { 
    var message = "Whatever"; 
    e = e || window.event; 
    if (!isGoodLink) { 
    // For IE and Firefox 
    if (e) { 
    e.returnValue = message; 
    } 
    // For Safari 
    return message; 
    } 
}; 
function setGoodLink() { 
    isGoodLink=true; 
} 

,并添加要保持安全事件的setGoodLink功能:

<button type="button" onclick="javascript:setGoodLink() ">I am a good button!</button> 
相关问题