我有以下代码,如果用户刷新运行良好的页面,将会警告用户。
但是,当用户点击某个按钮或某个可能只是href ='#'的内容或者我的网站更改了网址时,他们也会收到警告。如何在尝试刷新浏览器时才显示此警报?
由于
window.onbeforeunload = function (e) {
e = e || window.event;
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = 'WARNING: You are about to reload this page, doing so will loose all your open tabs and loose any unsaved data.';
}
// For Safari
return 'WARNING: You are about to reload this page, doing so will loose all your open tabs and loose any unsaved data.';
};
答案 0 :(得分:2)
概念解决方案(在jQuery中):
var going_away = true;
$("a").click(function()
{
// if it's local link - $(this).attr('href').indexOf("#") == 0 || $(this).attr('href').indexOf("/") == 0
going_away = false;
});
$("form").submit(function()
{
// if it's local action - $(this).attr('action').indexOf("/") == 0
going_away = false;
});
window.onbeforeunload = function (e) {
if (going_away)
window.confirm(...)
}
编辑:当然条件的前提是定位外向链接,因此我们可能应该检查http,或者区分本地链接和外发链接的其他方式。