在nwjs上禁用DevTools 13

Fra*_*ool 7 javascript google-chrome-devtools node-webkit chrome-app-developer-tool

我们正在开发基于Chrome应用程序和NWJS 0.13.0 Alpha版本的应用程序,因为较低版本不支持Chrome应用程序.我们需要版本13,因此我们可以使用串行端口.

但是在Windows或Ubuntu中,当按下右边的clic时,它显示了一个菜单,我禁用了(因为它是这样指定的),在我的所有HTML中使用以下函数:

<body oncontextmenu="return false">
<script language="javascript">
    document.onmousedown=disableclick;
    function disableclick(event) {
        if(event.button==2) {
            return false;
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

但是在Mac OS X中,由于自定义菜单,我们遇到了另一个问题,在阅读清单格式后,我发现在我的package.json文件中我需要添加"no-edit-menu": false属性而该菜单不再显示,该package.json文件如下:

{
    "main": "main.html",
    "name": "PAGUSS",
    "description": "Paguss Payment Services",
    "version": "0.1.0",
    "keywords": [ "paguss", "payment" ],
    "window": {
        "title": "Paguss",
        "transparent": true,
        "icon": "assets/images/64x64.png",
        "toolbar": false,
        "frame": true,
        "resizable": true,
        "position": "mouse",
        "min_width": 400,
        "min_height": 500,
        "max_width": 1200,
        "max_height": 800,
        "no-edit-menu": false
    },
    "webkit": {
        "plugin": false
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我试图改变"toolbar": false,package.json文件,因此没有工具栏,因此用户不能从那里开devtools,但如果他们按F12Shift-Ctrl-J他们仍然能够打开devtools窗口.我在上面的脚本中尝试了以下一行,尝试禁用devtools窗口打开但没有成功(至少在Mac OS X上我们优先禁用它):

if(event.button==2 || window.event.keycode==123 || (window.event.keycode==55 && window.event.keycode==58 && window.event.keycode==34)) {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我从这里获得了Apple键盘的上述密码.

我是Javascript编码的新手,所以我的一些尝试可能不对或接近正确.

有没有办法在任何操作系统上禁用开发工具在NWJS 13上打开?


编辑

我发现第二次使用keyCodes时出错了.

我试图在右键单击事件上调用脚本,我将代码更改为:

<script language="javascript">
    document.onmousedown=disableclick;
    document.onkeydown=disableconsole;
    function disableclick(event) {
        if(event.button==2) {
            return false;    
        }
    }
    function disableconsole(event) {
        if (event.keyCode==123) {
            return false;
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

这实际上阻止了控制台F12在Linux上使用密钥打开开发工具,但是即使使用此更新,Windows和OS X仍然无法正常工作.

编辑2

我发现在这个上看到不同的操作系统有不同的keyCodes,所以我想我在Windows和OS X上测试时没有得到成功的响应.

Fra*_*ool 1

好吧,在尝试了很多事情并阅读了大量示例之后,我发现有和属性。ctrlKey altKey shiftKeymetaKey

\n\n

之后,我提供了这个脚本,它将阻止用户通过快捷方式(即F12在 Windows 和 Linux 以及\xe2\x8c\x98 \xe2\x8c\xa5 IMac 上)打开 NWJS 13 上的 DevTools。并且还禁用右键菜单。

\n\n
<script language="javascript">\n    document.onmousedown=disableclick;\n    document.onkeydown=disableconsole;\n    function disableclick(event) {\n        if(event.button==2) {\n            return false;    \n        }\n    }\n    function disableconsole(e) {\n        evtobj = window.event? event : e;\n        if (evtobj.keyCode==123 || //Linux & Windows\n                (evtobj.metaKey && evtobj.altKey && evtobj.keyCode==73)) { //Mac\n            return false;\n        }\n    }\n</script>\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

编辑

\n\n

解决这个问题的另一种方法是使用 NWJS alpha 版本 3(不带 SDK),该版本是在NWJS Google Group上指定的,但我后来阅读了它。

\n