我们正在开发基于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仍然无法正常工作。
我发现不同的操作系统有不同的键码,如table所示,所以我猜我在Windows和OS X上测试时没有获得成功的响应因为它
答案 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
shiftKey
和metaKey
属性。
之后,我带来了这个脚本,它将阻止用户从快捷方式(即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.