Javascript 单击按钮时从网页关闭系统

Javascript 单击按钮时从网页关闭系统,javascript,html,electron,Javascript,Html,Electron,我正在做一个CiberCafe,我需要当用户想要离开时,当点击退出按钮时,机器将自动重启 我正在通过html、css、javascript和electron.js框架创建这个web 有人知道我如何在单击按钮时关闭系统吗?由于安全原因,如果不在浏览器外运行某些内容,这是不可能的 但是,如果页面是从服务器提供的,并且您想关闭此服务器,请继续阅读: 一个可能的解决方案是在后台运行服务器,例如node.js 在node.js服务器上,您可以侦听正在调用的特定url,在触发此事件时,您可以向主机发送关机命

我正在做一个CiberCafe,我需要当用户想要离开时,当点击退出按钮时,机器将自动重启

我正在通过html、css、javascript和electron.js框架创建这个web


有人知道我如何在单击按钮时关闭系统吗?

由于安全原因,如果不在浏览器外运行某些内容,这是不可能的

但是,如果页面是从服务器提供的,并且您想关闭此服务器,请继续阅读:

一个可能的解决方案是在后台运行服务器,例如node.js

在node.js服务器上,您可以侦听正在调用的特定url,在触发此事件时,您可以向主机发送关机命令。但是,这会带来一些安全问题,您需要阻止从外部对节点的调用(如果您希望其他人能够关闭它,则不需要)。您的node.js服务器必须使用root权限运行,这也是有风险的


看一看,也许你能在里面找到对你有用的东西。

我认为你最好的办法是关闭你的计算机并执行它

<script type="text/javascript" language="javascript">
    function RunFile() {
    WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run("c:/windows/system32/notepad.exe", 1, false);
    }
</script>

函数RunFile(){
WshShell=newActiveXObject(“WScript.Shell”);
运行(“c:/windows/system32/notepad.exe”,1,false);
}

注意,这仅适用于IE。

由于上述所有原因,浏览器无法关闭机器。但是,浏览器可以通过其他方式请求受信任的应用程序关闭(或重新启动)计算机

您需要创建在同一台计算机上运行的服务器。您可以创建一个将在特定端口上等待http请求的

这个python服务器应该以适当的权限启动,这样它就可以关闭机器

现在,当您想从浏览器关闭计算机时,它所要做的就是发送一个HTTP请求,以在正确的端口(到服务器)上进行环回。服务器将验证请求(是否来自适当的主机等),然后使用
os.system
的适当系统特定命令继续关闭机器

显然,您还需要在电脑重新启动时自动启动服务器。这很容易实现,但取决于您的操作系统,您可以找到足够的资源来实现这一点


希望这有帮助

如果您使用Electron框架,您可以访问的不仅仅是基本的html、js

使用关闭所需的命令创建bat文件

c:\windows\system32\shutdown -s -f -t 00 :: shutdown
:: c:\windows\system32\shutdown -r -t 00 :: restart
:: c:\windows\system32\shutdown /h :: hibernate
在电子方面:

var child = require('child_process').execFile;
var executablePath = "path_to_bat_file";

child(executablePath, function(err, data) {
    if(err){
       console.error(err);
       return;
    }

    console.log(data.toString());
});

由于安全原因,您无法从网页执行此操作。如果你能做到这一点,用户浏览的任何网页都可以做到,而你肯定不希望这样。你不需要重新启动,你只需要启动一个新的登录会话或者别的什么。有一些免费的“internet kiosk”类型的应用程序/操作系统,你可以用谷歌搜索,也许其中一个可以满足你的需要。但这些都不是通过网页可以做到的。@ADyson可能是在尝试使用包含浏览器的electron.js框架来做到这一点。@HariDas很好,我只是假设electron是另一个web GUI框架。但谷歌快速提出,它可以用来构建桌面应用程序。在这种情况下,如果O/S有正确的绑定可用,应用程序可能会使其注销(我仍然认为它应该注销,而不是重新启动,不需要这样做)。由于不熟悉该框架,很遗憾,我不能说更多。在这种情况下,OP可以使用脚本杀死electron。我有批处理文件在超过时间限制时杀死electron。我不能为OP说话,但如果我经营一家网吧,我当然不希望启用ActiveX。事实上,我很有可能不使用Windows。鉴于ActiveX自2015年以来一直不受支持,IE实际上已经过时(11将是最后一个版本),它作为解决方案不会持续很久。另外,和我一样,你也没有注意到OP中提到的electron框架,它用于构建桌面应用程序,因此下载批处理文件应该是不必要的,因为应用程序无论如何都在桌面上运行。我已经将你的代码包含在electron中的javascript函数中,并通过单击按钮调用它,但不执行任何调试操作!它不能‘什么都不做’:)你的评论无助于我进一步帮助你:)我已经成功了!我查看了条目检查,发现它有语法错误。谢谢你的帮助,使我免于匆忙!