首页 新闻 会员 周边

跪求JS或jquery兼容火狐的关闭窗口方法

0
悬赏园豆:200 [已关闭问题] 关闭于 2016-06-13 10:58

百度了半天都是要通过手动去设置火狐的dom.allow_scripts_to_close_windows为true才能执行,但是不可能要让每个用户去手动设置吧?

所以请大神们给个兼容FF的关闭方法,就是点击关闭时询问用户 “您正在游戏中?是否强退”如果点击确定,就关闭页面

周伯通大弟子的主页 周伯通大弟子 | 初学一级 | 园豆:9
提问于:2016-05-13 11:05
< >
分享
所有回答(4)
0

用onbeforeunload()

上帝之城 | 园豆:2549 (老鸟四级) | 2016-05-13 11:14

可是火狐只能提示默认的提示,不支持自己的提示

支持(0) 反对(0) 周伯通大弟子 | 园豆:9 (初学一级) | 2016-05-13 11:19
0
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 ("您正在游戏中?是否强退");
            }
          }
        }
刘宏玺 | 园豆:14020 (专家六级) | 2016-05-13 11:22

不行,没有执行任何提示,所有浏览器都没提示

支持(0) 反对(0) 周伯通大弟子 | 园豆:9 (初学一级) | 2016-05-13 11:27
0

人家出于安全考虑,要用户去设置也是没办法的

Yu | 园豆:12980 (专家六级) | 2016-05-13 11:52

有没有覆盖系统的方法啊?

支持(0) 反对(0) 周伯通大弟子 | 园豆:9 (初学一级) | 2016-05-13 11:58

@周伯通大弟子: 什么意思?

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2016-05-13 12:42

@周伯通大弟子: 

你可以让用户通过图形界面去设置

支持(0) 反对(1) Yu | 园豆:12980 (专家六级) | 2016-05-13 12:48

@周伯通大弟子:

要么在安装目录找到 *prefs.js 文件,添加一句 

pref("dom.allow_scripts_to_close_windows",true);

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2016-05-13 13:18

@Yu: 在哪添加

支持(0) 反对(0) 周伯通大弟子 | 园豆:9 (初学一级) | 2016-05-13 14:11

@周伯通大弟子: 你要找到这个文件,就能添加了

我的机器 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);

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2016-05-13 14:21

@Yu: 只有小小的改变,但还是不能解决

支持(0) 反对(0) 周伯通大弟子 | 园豆:9 (初学一级) | 2016-05-13 15:50

@周伯通大弟子: 也就这样了

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2016-05-13 16:15
0

在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);

 

幻天芒 | 园豆:37175 (高人七级) | 2016-05-13 12:51

还是不行,得先刷新页面才会触发,而且不能显示自己的文字,都是默认的

支持(0) 反对(0) 周伯通大弟子 | 园豆:9 (初学一级) | 2016-05-13 14:10

@周伯通大弟子: 在Firefox上是这样的(安全性设置)。貌似无解。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2016-05-16 22:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册