Javascript访问本地可执行文件

时间:2010-11-04 23:28:00

标签: javascript executable

网站http://combatarms.nexon.net/右侧有一个按钮'开始游戏'。如果您在计算机上安装了游戏并且您已登录该站点,则当您单击该按钮时,它将在您的计算机上启动游戏。

这怎么可能?我总是被认为Javascript无法访问除浏览器本身以外的任何内容,因为这将是一个安全问题,所以这是如何工作的?

2 个答案:

答案 0 :(得分:2)

我认为Amir几乎是正确的,但似乎他们没有注册协议而是MIME类型,并且使用ActiveX(用于IE)和浏览器插入Firefox和其他浏览器:

来自http://combatarms.nexon.net/JS/NGM.js

this.strGameAXName = "NXCOM.NxGameControl.US.2"; // ActiveX class
this.strGameFPName = "application/x-npnxgame-us"; // MIME type
this.strNxMInfoAXName = "NXCOM.NxMachineControl.US.1"; // ActiveX class
this.strNxMInfoFPName = "application/x-npnxminfo-us"; // MIME type

总之,由于您说这只适用于安装游戏,因此它们似乎使用的方法与Adobe Reader或Quicktime相同:安装浏览器插件/ activex并注册MIME类型与该插件相关联。

唯一的区别是他们使用javascript(您可以使用JavaScript中的任何插件,例如您可以使用JS控制Windows Media Player插件或Flash)。

答案 1 :(得分:1)

这可能不是这样,但在过去,大多数应用程序所做的是注册他们收听的协议。所以Aim有目标://和winamp://。然后,操作系统处理这些协议并将它们传递给适当的应用程序。我很好奇这里是否同样如此。

好的,它似乎就在这个文件中。 http://combatarms.nexon.net/JS/NGM.js

编辑啊啊:)

var NGMModuleInfo = '<?xml version="1.0"?><NGMModule><NGMDll host="ngm.nexon.net/ngm/NGM/Bin/NGMDll.dll" crc="1505415642" /><GameData><combatarms_us gamecode="33563143" crc="0" /></GameData></NGMModule>';

所以它是一个正在使用的dll文件。所以很可能是一个ActiveX或类似的东西。可能不适用于mac:)