在nwjs上禁用DevTools 13

时间:2015-11-11 19:12:02

标签: 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>

但是在Mac OS X中我们因为自定义菜单而遇到了另一个问题,在阅读Manifest Format之后我发现在我的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
    }
}

现在,我尝试更改"toolbar": false,文件上的package.json,因此没有工具栏,因此用户无法从那里打开devtools,但是如果按{{1}或者F12他们仍然可以打开devtools窗口。我在上面的脚本中尝试了以下一行,尝试禁用devtools窗口打开但没有成功(至少在Mac OS X上我们优先禁用它):

Shift-Ctrl-J

我从here获得了Apple键盘的上述密钥代码。

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

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

修改

我发现第二次尝试使用keyCodes时出错了。

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

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

这实际上阻止了控制台在Linux上使用<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> 密钥打开开发工具,但是即使使用此更新,Windows和OS X仍然无法正常工作。

编辑2

我发现不同的操作系统有不同的键码,如table所示,所以我猜我在Windows和OS X上测试时没有获得成功的响应因为它

4 个答案:

答案 0 :(得分:4)

当DevTools打开时,窗口有一个事件devtools-opened

在这个事件中使用closeDevTools()关闭Devtools win

<script type="text/javascript">
var gui = require('nw.gui'); 
var win = gui.Window.get();
win.on("devtools-opened",function(){
    console.info("devtools-opened");
    win.closeDevTools();
});
</script>

答案 1 :(得分:2)

要禁用DevTools,您可以在package.json中使用chrome args,如下所示:

{
    "name": "desktopApp",
    "main": "index.html",
    "version": "1.0.0",
    "chromium-args": "--disable-devtools"
}

答案 2 :(得分:1)

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

之后,我带来了这个脚本,它将阻止用户从快捷方式(即Windows和Linux上的F12和Mac上的⌘ ⌥ I)打开NWJS 13上的DevTools。并且还禁用正确的clic菜单。

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

修改

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

答案 3 :(得分:0)

设计不可能。 如果您试图阻止用户查看代码或黑客攻击页面,它将无济于事。 See the old question.