gpt4 book ai didi

javascript - 如何永久阻止在 onbeforeunload 上分配函数的能力

转载 作者:行者123 更新时间:2023-11-28 01:15:24 27 4
gpt4 key购买 nike

这就是我想要解决的问题:我不想再被问到我是否真的想关闭窗口。不幸的是,有些人认为在 onbeforeunload (或类似函数)中添加一个alert() 是一个好主意,可以让他们的页面在屏幕上停留更长时间。

是否可以永久地防止 onbeforeunload 重新定义 begin ?

例如,在 Safari 扩展中,是否可以捕获对 onbeforeunload 所做的修改并阻止它?

最佳答案

看起来可以使用 Object.defineProperty 。您需要设法在要阻止该属性的所有网页的执行上下文中执行以下代码:

Object.defineProperty(window, 'onbeforeunload', {value: null});

在 Chrome 扩展程序中,您可以使用 content script 来实现这一点运行于 <all_urls>all_framesdocument_start ,并使用 this answer 中描述的一些技术使代码在页面的执行上下文中运行。对于 Safari 扩展来说,它应该或多或少是相同的。

请注意,页面仍然可以注册 beforeunload处理程序使用 window.addEventListener 。为了防止这种情况发生,您可以在前一行代码中添加如下内容:

(function() {
var prevFunc = window.addEventListener;
window.addEventListener = function( name ) {
if( name !== 'beforeunload' )
return prevFunc.apply(window, arguments);
}
})();

关于javascript - 如何永久阻止在 onbeforeunload 上分配函数的能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23896603/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com