Javascript Greasemonkey警报以确认关闭窗口不工作?
我正在编写一个简单的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
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 ();
}
}
但请注意两个重要的烦恼:
但是,如果用户按“取消”,则会弹出“确定”对话框,用户仍必须按“保持在页面上”
Firefox中的已知bug。这对我仍然不起作用。我有
函数confirmClose(evt){evt.preventDefault();}window.addEventListener('beforeunload',confirmClose,true)的行代码>很好用。还有别的事情。在更简单的页面上尝试代码。链接到目标页面。你真正完整的剧本。