如何用自定义代码替换window.onbeforeunload?

时间:2013-09-12 20:50:07

标签: javascript jquery google-chrome google-chrome-extension

出于辅助功能的原因,对于我的Chrome扩展程序,我需要能够使用页内HTML替代品替换所有标准window.onbeforeunload弹出式窗口。我知道如何创建替代骨架,这是微不足道的。

我知道这里的基本想法是window.onbeforeunload = {my substitute code}

我不知道该怎么做是从页面发出的每个确认窗口中获取文本和代码,并将其引导到我的替代品中,以便显示与原始弹出窗口中相同的消息并单击我的替换confirmleave page(或其他)按钮产生与原始弹出窗口相同的结果。

如何做到这一点?


实施例

您已安装我的扩展程序(不要问它的用途是什么,无关紧要)。

你开始在StackOverflow上写一个问题,然后意识到你已经知道了答案,然后去关闭标签。

通常情况下会出现一个确认窗口,询问您是否确定要离开该页面。

但是由于我的扩展,相反,整个页面的HTML被推了一下,以便为临时HTML确认框提供空间,显示相同的文本和相同的两个按钮,点击时产生相同的两个结果,所有在页。没有弹出窗口。

1 个答案:

答案 0 :(得分:2)

您正在谈论的功能是window.onbeforeunload事件,不幸的是,它可以自定义的唯一方法是为用户提供自定义字符串消息,因为滥用的可能性非常高。

在msdn上为Internet Explorer个州的api引用:

  

对话框中显示的默认语句“您确定吗?   你想离开这个页面吗? ...按OK继续,或   取消保留在当前页面上。“,不能删除或更改。

我认为这意味着对话框本身无法更改,您所能做的就是提供额外的特定于上下文的消息。我无法找到Chrome的相同参考,但它似乎是相同的故事。

window.onbeforeunload = function() {
    //all you can do is provide a message..
    return "you have unsaved changes, if you leave they will be lost";
}
相关问题