Comment utiliser nodejs pour ouvrir le navigateur par défaut et accéder à une URL spécifique


135

J'écris une application en utilisant Node.js.

L'une des fonctions que je souhaite créer est d'ouvrir le navigateur Web par défaut et de naviguer vers une URL spécifique.

Je veux qu'il soit portable pour qu'il fonctionne sous Windows / Mac / Linux.


3
Je suppose que cette question est ce que vous recherchez: stackoverflow.com/questions/7664605/…
TomTasche

oui, cela fonctionne sous Mac. ça marche sous Windows et Linux? Je n'avais pas de machine à vitres en main
Qing Xu

1
xdg-open fonctionne sous Linux :)
Qing Xu

Réponses:


167

Utilisez opn car il traitera le problème multiplateforme. À installer:

$ npm install opn

Utiliser:

var opn = require('opn');

// opens the url in the default browser 
opn('http://sindresorhus.com');

// specify the app to open in 
opn('http://sindresorhus.com', {app: 'firefox'});

ForbesLindesay le rappel est appelé immédiatement, au lieu de lorsque la fenêtre est fermée. Des idées?
Sam Selikoff

2
Pas sûr, cela pourrait valoir la peine d' essayer github.com/domenic/opener comme module alternatif avec la même API. Il semble qu'il dispose d'un outil de suivi des problèmes approprié sur lequel vous pourriez ouvrir un problème. Cela peut être juste une bizarrerie de la façon dont les navigateurs signalent le processus comme se terminant, donc il peut ne pas être facilement réparable.
ForbesLindesay

1
Ceci est une excellente recommandation, fonctionne très bien pour le cas d'utilisation décrit par l'OP.
jbranchaud

2
Il semble que l'opener fonctionne sur Mac / Windows / Linux alors que open ne fonctionne que sur Mac / Windows, donc l'opener est préférable.
Tom

2
Veuillez mettre à jour pour suggérer opnau lieu de opencar ce dernier est désormais obsolète.
Samir Aguiar

43
var url = 'http://localhost';
var start = (process.platform == 'darwin'? 'open': process.platform == 'win32'? 'start': 'xdg-open');
require('child_process').exec(start + ' ' + url);

1
Il convient de noter, sur Windows au moins, &les ^&
fichiers

1
J'ai emballé une logique similaire, je l'ai promis et publié sur npm npmjs.com/package/out-url
azhar22k le

6

node-open est obsolète . Maintenant, utilisez opn :

const opn = require('opn')

opn('http://sindresorhus.com') // Opens the url in the default browser

//opn('http://sindresorhus.com', {app: 'firefox'}) // Specify the app to open in

3

Vous devrez peut-être implémenter un commutateur en utilisant la valeur de ...

require('os').type()

Et puis utiliser spawn("open")ou spawn("xdg-open")selon la plate-forme?


4
Dans Windows, j'essaye spawn ("explorer.exe", [' stackoverflow.com'] ), l'explorateur Windows sélectionnera le navigateur par défaut pour ouvrir l'URL.
Qing Xu

@PaulIrish: Malheureusement, votre lien est maintenant mort.
mklement0

2
@QingXu génial! require('child_process').spawn('explorer', ['url'])est un joli oneliner!
TWiStErRob

2

Le moyen le plus simple et le plus soigné, IMHO utilise un package npm appelé openurl . Faites un npm install openurl. Vous pouvez essayer cela très rapidement dans votre REPL Nodejs

require("openurl").open("http://stackoverflow.com/questions/8500326/how-to-use-nodejs-to-open-default-browser-and-navigate-to-a-specific-url")

Vous pouvez également envoyer des e-mails avec lui si le besoin s'en fait sentir; require("openurl").open("mailto:janedoe@example.com")

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.