百度了半天都是要通过手动去设置火狐的dom.allow_scripts_to_close_windows为true才能执行,但是不可能要让每个用户去手动设置吧?
所以请大神们给个兼容FF的关闭方法,就是点击关闭时询问用户 “您正在游戏中?是否强退”如果点击确定,就关闭页面
用onbeforeunload()
可是火狐只能提示默认的提示,不支持自己的提示
window.onbeforeunload =
function
() {
if
(flag) {
var
evt = window.event || arguments[0];
var
userAgent = navigator.userAgent;
if
(userAgent.indexOf(
"MSIE"
) > 0) {
var
n = window.event.screenX - window.screenLeft;
var
b = n > document.documentElement.scrollWidth - 20;
if
(b && window.event.clientY < 0 || window.event.altKey) {
window.event.returnValue = (
"您正在游戏中?是否强退"
);
}
else
{
return
(
"您正在游戏中?是否强退"
);
}
}
else
if
(userAgent.indexOf(
"Firefox"
) > 0) {
return
(
"您正在游戏中?是否强退"
);
}
}
}
不行,没有执行任何提示,所有浏览器都没提示
人家出于安全考虑,要用户去设置也是没办法的
有没有覆盖系统的方法啊?
@周伯通大弟子: 什么意思?
@周伯通大弟子:
你可以让用户通过图形界面去设置
@周伯通大弟子:
要么在安装目录找到 *prefs.js 文件,添加一句
pref("dom.allow_scripts_to_close_windows",true);
@Yu: 在哪添加
@周伯通大弟子: 你要找到这个文件,就能添加了
我的机器 C:\Program Files\Mozilla Firefox\defaults\pref\channel-prefs.js
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
pref("app.update.channel", "release");
pref("dom.allow_scripts_to_close_windows",true);
@Yu: 只有小小的改变,但还是不能解决
@周伯通大弟子: 也就这样了
在Firefox上,确实实现不了close操作。请参考:https://developer.mozilla.org/en-US/docs/Web/API/Window/close 。
关于退出提示,给你一个兼容FF的版本:
(function(window){ function getEvent(){ if(document.all){ return window.event; } var func = getEvent.caller; while(func != null){ var arg0 = func.arguments[0]; if(arg0){ if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){ return arg0; } } func = func.caller; } return null; } function confirmClose(){ if(window.event){ window.event.returnValue = '您正在游戏中?是否强退'; }else{ getEvent().preventDefault(); //for firefox } } if(!window.onbeforeunload){ window.onbeforeunload = confirmClose; } })(window);
还是不行,得先刷新页面才会触发,而且不能显示自己的文字,都是默认的
@周伯通大弟子: 在Firefox上是这样的(安全性设置)。貌似无解。