Max*_*axx 26 javascript jquery internet-explorer onbeforeunload onunload
我正在为我的表单构建一个故障保护,它会警告用户,如果他们离开页面,他们的表单数据将会丢失(类似于gmail所做的).
window.onbeforeunload = function () {
if (formIsDirty) {
return "You have unsaved data on this form. Don't leave!";
}
}
Run Code Online (Sandbox Code Playgroud)
上面的函数在firefox中很有用,但在IE中它由任何href链接触发,即使是链接到javascript而不是其他页面的链接.
例如....
<a href='javascript:someFunction();'>click</a>
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法绕过这个,因为我不希望用户认为他们只是点击它上面的按钮就离开了页面.我没有选择重写所有各种链接,因为它们是内置的和众多的.
有任何想法吗?
Dr.*_*lle 36
您可以在悬停这些链接时删除并重新分配onbeforeunload:
jQuery(
function($)
{
//store onbeforeunload for later use
$(window).data('beforeunload',window.onbeforeunload);
//remove||re-assign onbeforeunload on hover
$('a[href^="javascript:"]')
.hover(
function(){window.onbeforeunload=null;},
function(){window.onbeforeunload=$(window).data('beforeunload');}
);
}
);
Run Code Online (Sandbox Code Playgroud)
我刚遇到类似的问题,发现了一个非常简单的解决方案:
$("a").mousedown(function() {
$(window).unbind();
});
Run Code Online (Sandbox Code Playgroud)
这将在触发click事件之前删除onbeforeunload事件.
| 归档时间: |
|
| 查看次数: |
27180 次 |
| 最近记录: |