代码之家  ›  专栏  ›  技术社区  ›  Glenn Nelson

访问本地可执行文件的javascript

  •  0
  • Glenn Nelson  · 技术社区  · 14 年前

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

    这怎么可能?我一直认为javascript不能访问除浏览器本身以外的任何东西,因为这将是一个安全问题,所以这是如何工作的?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Alberto Martinez    14 年前

    我认为amir几乎是对的,但似乎他们注册的不是一个协议,而是一个mime类型,使用一个ActiveX(用于IE)和一个浏览器插件来连接火狐和其他浏览器:

    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)。

        2
  •  1
  •   Amir Raminfar Hadi Rasouli    14 年前

    这可能不是办法,但在过去,大多数应用程序所做的就是注册一个他们监听的协议。所以aim有aim://和winamp://。然后操作系统处理这些协议并将它们传递给适当的应用程序。我很好奇这里是否也一样。

    好吧,不管是什么,似乎都在这个文件里。 http://combatarms.nexon.net/JS/NGM.js

    编辑AHHH:

    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上不工作:)