如何使用JS

时间:2017-08-12 23:35:58

标签: javascript apache

到目前为止,这是我的代码。

<html>
<head>
<script language="JavaScript">
function java(){
process process = new ProcessBuilder("Pathtomyprogram").start();
}
</script>
</head>
<form name="Test">
<input type="button" value="Test" onClick="java()">
</form>
</body>
</html>

当我进入网络浏览器并单击我创建的按钮并且它无法启动我在主机上指定的程序时,会出现问题。我可能会犯一个完全明显的错误,因为我一直在拼接来自多个来源的代码。所以基本上,如何在我的手机上打开我的网站(在其上托管javascript)上启动一个程序,点击按钮后它会在主机上打开一个程序?

如果这是不可能的,我是一个完整的白痴,请告诉我!

如果有必要知道,这个javascript将在Windows XP PC上的Apache 2.2上托管。

编辑:哇,我刚才在这个问题上真的很蠢。好的,所以我意识到我的问题根本没有形成。以下是如何做到这一点。

我的解决方案是在PHP中找到的,并且非常草率,根本不应该使用,但是这里适用于任何需要做我正在做的事情的人。

好的,就像许多人在下面指出的那样,允许从客户端在服务器上启动程序风险太大了。没有纯粹的方法,但这是一种偷偷摸摸,不切实际的方式。

<?php
 function play() {
 $myfile = fopen("start.txt", "w") or die("Unable to open file!");
 }
?>

这样做是将“w”写入服务器上的“start.txt”文件。还有一个批处理程序(显然不必批处理)在服务器上运行,以查看是否存在“start.txt”。如果是,它会运行我想要的东西,然后删除“start.txt”以便下次重置它。

当然,这是所有感兴趣的人的“batch.bat”代码。

@echo off
:home
if exist start.txt goto next
goto home
:next
rem Code you want to be executed goes here.
cls
del start.txt
goto home

但实际上,除非这是您或您信任的少数朋友会使用的,否则永远不要这样做。我现在更加明智,更了解javascript和网络编程,这一点,即使我认识到,这是一个可怕的修复。谢谢!

1 个答案:

答案 0 :(得分:1)

  

如果这不可能并且我是一个完整的白痴,请告诉我!

出于安全原因,这是不可能的,所以;)...至少它的工作并不像你的问题所描绘的那样简单。

您的代码正在浏览器中运行,该文件将您的文档和包含的javascript放在&#34;沙盒中#34;阻止它访问浏览器之外的任何东西。

从这里的评论和问题得出结论:

  • 如果您在HTML文档的上下文中使用Javascript以在浏览器中呈现,则此代码在该浏览器的上下文中运行,该浏览器至少需要特殊(手动)设置以提供在运行浏览器的主机上运行软件的机会。例如,浏览器和/或操作系统提供映射表,将URL方案与要调用的程序相关联以处理任何URL。
  • 由于您指示在手机上观看您的网站时尝试在主机上运行程序,这似乎完全不同:Javascript正在您的手机上运行,​​并且绝对无法在运行服务器的主机上神奇地启动某些程序。因此,您似乎希望使用PHP或类似的服务器端脚本语言来提供用于触发程序执行的URL。 PHP并没有绑定到某个浏览器的沙箱,而是绑定到主机(实际上它是这里的服务器)计算机。然后,您的按钮可能只是让浏览器请求该脚本的输出(可能使用Javascript),导致Apache / PHP运行脚本,而脚本又使用PHP exec()来启动在主机aka服务器上的应用程序。
相关问题