Jak używać nodejs do otwierania domyślnej przeglądarki i przechodzenia do określonego adresu URL


135

Piszę aplikację przy użyciu Node.js.

Jedną z funkcji, które chcę utworzyć, jest otwarcie domyślnej przeglądarki internetowej i przejście do określonego adresu URL.

Chcę, aby był przenośny, aby działał w systemie Windows / Mac / Linux.


3
Myślę, że to pytanie jest tym, czego szukasz: stackoverflow.com/questions/7664605/ ...
TomTasche,

tak, to działa na Macu. czy to działa w systemie Windows i Linux? nie miałem w ręku maszyny do okien
Qing Xu

1
xdg-open działa w Linuksie :)
Qing Xu

Odpowiedzi:


167

Użyj opn, ponieważ rozwiąże problem między platformami. Żeby zainstalować:

$ npm install opn

Używać:

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, wywołanie zwrotne jest wywoływane natychmiast, zamiast po zamknięciu okna. Jakieś pomysły?
Sam Selikoff

2
Nie jestem pewien, może warto wypróbować github.com/domenic/opener jako alternatywny moduł z tym samym API. Wygląda na to, że ma odpowiednie narzędzie do śledzenia problemów, w którym można je otworzyć. Może to być po prostu dziwne, jak przeglądarki zgłaszają zakończenie procesu, więc może to nie być łatwe do naprawienia.
ForbesLindesay,

1
To świetna rekomendacja, działa bardzo dobrze w przypadku użycia opisanym przez OP.
jbranchaud

2
Wygląda na to, że otwieracz działa na Mac / Windows / Linux, podczas gdy otwarty działa tylko na Mac / Windows, więc otwieracz jest lepszy.
Tom

2
Zaktualizuj, aby sugerować opnzamiast, openponieważ ta ostatnia jest obecnie przestarzała.
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
Należy zauważyć, że przynajmniej w oknach &adres URL powinien być ^&
poprzedzony znakami

1
Zapakowałem podobną logikę, obiecałem ją i opublikowałem na npm npmjs.com/package/out-url
azhar22k

6

node-open jest przestarzałe . Teraz użyj 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

Może być konieczne zaimplementowanie przełącznika przy użyciu wartości ...

require('os').type()

A potem użyć spawn("open")lub w spawn("xdg-open")zależności od platformy?


4
W systemie Windows spróbuję spawn („explorer.exe”, [' stackoverflow.com'] ), eksplorator Windows wybierze domyślną przeglądarkę do otwarcia adresu URL.
Qing Xu

@PaulIrish: Niestety, Twój link jest teraz martwy.
mklement0

2
@QingXu awesome! require('child_process').spawn('explorer', ['url'])to fajny oneliner!
TWiStErRob

2

Najłatwiejszym i najładniejszym sposobem IMHO jest użycie pakietu npm o nazwie openurl . Zrób npm install openurl. Możesz spróbować tego naprawdę szybko w swoim REPL Nodejs

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

Możesz również wysyłać za jego pomocą e-maile, jeśli zajdzie taka potrzeba; require("openurl").open("mailto:janedoe@example.com")

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.