Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Greasemonkey警报以确认关闭窗口不工作?_Javascript_Firefox_Greasemonkey - Fatal编程技术网

Javascript Greasemonkey警报以确认关闭窗口不工作?

Javascript Greasemonkey警报以确认关闭窗口不工作?,javascript,firefox,greasemonkey,Javascript,Firefox,Greasemonkey,我正在编写一个简单的Greasemonkey脚本,以确认如果您键入了一条很长的消息,是否要关闭窗口 几年前,我有一个这个脚本的工作版本,但它的网站已经发生了变化,所以我希望修复它。然而,我甚至不能得到一个简单的工作确认: function confirmClose() { return 'You have a long message typed. Are you sure you want to close?'; } window.addEventListener('beforeun

我正在编写一个简单的Greasemonkey脚本,以确认如果您键入了一条很长的消息,是否要关闭窗口

几年前,我有一个这个脚本的工作版本,但它的网站已经发生了变化,所以我希望修复它。然而,我甚至不能得到一个简单的工作确认:

function confirmClose() {
    return 'You have a long message typed. Are you sure you want to close?';
}

window.addEventListener('beforeunload', confirmClose, true);
我肯定脚本正在它应该运行的页面上运行,但是每当我试图关闭窗口时,我都没有收到任何确认。

作为一种安全措施,因此,
return
语句在使用
addEventListener
时没有任何效果(您应该这样做)

要停止卸载页面,需要使用
preventDefault()
如下所示:

window.addEventListener ('beforeunload', confirmClose, false);

function confirmClose (zEvent) {
    zEvent.preventDefault ();
}
这将弹出一个不变的对话框:


如果要显示自定义消息,可以使用如下对话框进行显示:

window.addEventListener ('beforeunload', confirmClose, false);

function confirmClose (zEvent) {
    var doQuitPage = confirm (
        "You have a long message typed. Are you sure you want to close?"
    );
    if ( ! doQuitPage) {
        zEvent.preventDefault ();
    }
}
但请注意两个重要的烦恼:

  • 如果用户按OK,则页面将退出,不再出现任何混乱。
    但是,如果用户按“取消”,则会弹出“确定”对话框,用户仍必须按“保持在页面上”

  • 根据HTML5规范


  • Firefox中的已知bug。这对我仍然不起作用。我有
    函数confirmClose(evt){evt.preventDefault();}window.addEventListener('beforeunload',confirmClose,true)的行很好用。还有别的事情。在更简单的页面上尝试代码。链接到目标页面。你真正完整的剧本。