該網站http://combatarms.nexon.net/在右側'開始遊戲'有一個按鈕。如果您的計算機上安裝了遊戲並且您已登錄該網站,則當您單擊該按鈕時,它將在您的計算機上啓動該遊戲。JavaScript訪問本地可執行文件
這怎麼可能?我總是被認爲Javascript不能訪問瀏覽器本身以外的東西,因爲這會是一個安全問題,所以這是如何工作的?
該網站http://combatarms.nexon.net/在右側'開始遊戲'有一個按鈕。如果您的計算機上安裝了遊戲並且您已登錄該網站,則當您單擊該按鈕時,它將在您的計算機上啓動該遊戲。JavaScript訪問本地可執行文件
這怎麼可能?我總是被認爲Javascript不能訪問瀏覽器本身以外的東西,因爲這會是一個安全問題,所以這是如何工作的?
我認爲埃米爾是幾乎正確的,但他們似乎沒有註冊協議,但一個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)。
這可能不是這樣,但在過去,大多數應用程序做的是註冊一個他們聽的協議。所以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 :)
是的,遊戲只有Windows。 – 2010-11-04 23:54:11
好的,很酷。所以這是正確的答案? – 2010-11-05 00:25:38