2010-11-04 4 views
0

Le site http://combatarms.nexon.net/ a un bouton sur le côté droit «Démarrer le jeu». Si vous avez installé le jeu sur votre ordinateur et que vous êtes connecté au site, lorsque vous cliquez sur le bouton, le jeu démarre sur votre ordinateur.Javascript accède aux exécutables locaux

Comment est-ce possible? J'ai toujours été amené à croire que Javascript n'est pas capable d'accéder à autre chose que le navigateur lui-même, car ce serait un problème de sécurité, alors comment cela fonctionne-t-il?

Répondre

2

Je pense que Amir a presque raison, mais il semble qu'ils ne sont pas en train d'enregistrer un protocole mais un type MIME, et en utilisant un ActiveX (pour IE) et un plugin de navigateur pour Firefox et les autres navigateurs:

de 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 

En résumé, puisque vous dites que cela ne fonctionne que lorsque le jeu est installé, il semble qu'ils utilisent la même méthode que, par exemple, Adobe Reader ou Quicktime: installation d'un plugin de navigateur/ActiveX et enregistrement d'un type MIME associé à ce plugin. La seule différence est qu'ils utilisent javascript (vous pouvez utiliser n'importe quel plugin de JavaScript, par exemple vous pouvez contrôler le plugin Windows Media Player ou Flash en utilisant JS).

1

Ce n'est probablement pas le cas, mais dans le passé, la plupart des applications enregistraient un protocole sur lequel elles écoutaient. Alors Aim avait pour but: // et winamp: //. Le système d'exploitation gère ensuite ces protocoles et les transmet à l'application appropriée. Je suis curieux si c'est la même chose ici.

Ok, quoi qu'il en soit, semble être dans ce fichier. http://combatarms.nexon.net/JS/NGM.js

Modifier 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>'; 

donc son fichier dll qui est utilisé. Donc, très probablement un ActiveX ou quelque chose de similaire. Probablement ne fonctionne pas sur un mac :)

+0

Oui, le jeu est Windows seulement. –

+0

Ok, cool. Donc, c'était la bonne réponse? –

Questions connexes