J'ai besoin de lancer Chrome à partir de la ligne de commande avec le paramètre personnalisé, qui Contient un chemin vers un fichier JS. Plus loin ce chemin sera utilisé dans Extension. P>
J'ai parcouru soigneusement toutes les documents connexes et cliqué sur tous les nœuds de Chrome débogueur, mais rien trouvé qui peut ressembler à la ligne de commande paramètres. Est-il possible de toute façon d'obtenir ces paramètres ou il est nécessaire écrire une extension NPAPI plus complexe? (théoriquement dans une telle NPAPI- extension que nous avons capable de bénéficier d'autonomie via Win-API, ligne de commande de auto-processus, etc.). p>
5 Réponses :
Alerte de hack: Cet article suggère Passage d'une fausse URL à ouvrir possède tous les paramètres de ligne de commande en tant que paramètres de chaîne de requête, par exemple
chrome.exe http://fakeurl.com/?param1=val1¶m2=val2
+1 merci! J'ai affiné cette approche un peu, pls. Consultez ma réponse. Je serais heureux d'entendre votre opinion.
Fonctionne ... peut également vouloir préfixer avec ./ code> comme
./ chrome.exe my_url code>
Vous pouvez essayer:
var versionPage = "chrome://version/strings.js"; $.post(versionPage, function(data){ data = data.replace("var templateData = ", ""); data = data.slice(0, -1); var jsonOb = $.parseJSON(data); alert(jsonOb.command_line); });
Cette méthode ne fonctionne que si vous avez la page de version ouverte, pour résoudre ce problème, je voudrais envelopper le $ .post avec: chrome.tabs.create ({URL: versionPage, actif: false}, fonction () {}); code>
Peut-être une fois que le message est terminé, vous pouvez alors fermer l'onglet :)
Cette technique utilisée pour fonctionner, mais pas sur Chrome 47. J'utilise maintenant la technique de -user-agents avec un grand succès.
Fondamentalement, j'utilise la technique donnée dans @ Réponse de DFrankow , mais j'ouvre exemple de ligne de commande pour passer des arguments 127.0.0.1:0 au lieu d'une fausse URL. Cette approche présente deux avantages:
0 code>. strong> en utilisant simplement
127.0.0.1 code> ne suffit pas, car il est possible qu'un serveur Web est possible. Sur la machine cliente, et je ne veux pas que l'extension se connecte accidentellement. Donc, je dois spécifier un numéro de port, mais lequel? Port
0 code> est le choix parfait: selon RFC 1700 Ce numéro de port est "réservé", c'est-à-dire que les serveurs ne sont pas autorisés à l'utiliser. li>
ol>
abc code> et
xyz code> à votre extension: p>
{"abc":"42","xyz":"hello"}
Passez peut-être le chemin d'accès à votre poste dans une chaîne d'agent utilisateur personnalisé définie via la ligne de commande. Par exemple: puis, dans votre extension: p>
Suite aux réponses ci-dessus sur l'utilisation de l'URL pour passer des paramètres dans, notez que seules des extensions, non des applications, peuvent le faire. J'ai publié une extension chromée qui intercepte simplement l'URL et la met à la disposition d'une autre application. p>
https://chrome.google.com/webstore/detail/gafgggdglmjplpklcfhcgfaeHecGG/ p>
Le code source est disponible à: p>
https://github.com/appazur/kiosk-launcher P>
pour écrans d'affichage public Wi-Fi p>
Les deux liens sont morts
Désolé, oui, j'ai changé pour utiliser la stratégie de groupe pour obtenir des paramètres à mon application, donc non publié.
FYI, l'approche NPAPI que vous avez décrite ne fonctionnera pas, car le plugin fonctionnerait dans un processus complètement différent (lancé par Chrome avec les paramètres de ligne de commande qu'il décide).
Vous avez tort et juste simultanément. J'ai déjà essayé un tel schéma et il est possible d'obtenir des informations sur le processus actuel séparé avec une extension. Cela signifie également qu'il existe un moyen d'obtenir des informations sur le processus parent et sur la ligne de commande du processus parent.
J'ai aussi trouvé une page spéciale chrome: // version. Cette page contient des informations exactes ce dont j'ai besoin - ligne de commande avec tous les commutateurs. J'ai essayé de déboguer cette page, mais je n'ai trouvé rien d'utile pour moi.
Les données affichées sur
chrome: // version code> sont définies dans
chrome: //version/strings.js code> mais les extensions ne sont pas autorisées à y accéder.