Varsayılan tarayıcıyı açmak ve belirli bir URL'ye gitmek için nodejs nasıl kullanılır


135

Node.js kullanarak bir uygulama yazıyorum.

Oluşturmak istediğim işlevlerden biri, varsayılan web tarayıcısını açmak ve belirli bir URL'ye gitmek.

Windows / Mac / Linux üzerinde çalışabilmesi için taşınabilir olmasını istiyorum.


3
Sanırım bu soru aradığınız şey: stackoverflow.com/questions/7664605/…
TomTasche

Evet, Mac'te çalışıyor. Windows ve Linux'ta çalışır mı? elinde bir pencere makinesi yoktu
Qing Xu

1
xdg-open Linux'ta çalışıyor :)
Qing Xu

Yanıtlar:


167

Platformlar arası sorunu ele alacağı için opn kullanın . Yüklemek:

$ npm install opn

Kullanmak:

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 geri arama, pencere kapatıldığında değil, hemen çağrılır. Herhangi bir fikir?
Sam Selikoff

2
Emin değilim , aynı API ile alternatif bir modül olarak github.com/domenic/opener'ı denemeye değer olabilir . Bir sorunu açabileceğiniz uygun bir sorun izleyiciye sahip gibi görünüyor. Tarayıcıların süreci biten bir şekilde rapor etmelerinin tuhaflığı olabilir, bu yüzden kolayca düzeltilemeyebilir.
ForbesLindesay

1
Bu harika bir tavsiye, OP tarafından açıklanan kullanım durumu için çok iyi çalışıyor.
jbranchaud

2
Açıcı Mac / Windows / Linux'ta çalışıyor gibi görünürken açık sadece Mac / Windows'da çalışır, bu nedenle açıcı tercih edilir.
Tom

2
Önermek güncelleyin opnyerine openikincisi artık önerilmemektedir olarak.
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
Dikkat edilmelidir ki, en azından pencerelerde, &'s URL'sinden ^&
kaçılmalıdır

1
Benzer mantığı tamamladım, söz verdim ve npmjs.com/package/out-url adresinde
azhar22k

6

düğüm-açık kullanımdan kaldırıldı . Şimdi opn kullanın :

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

Şunun değerini kullanarak bir anahtar uygulamanız gerekebilir ...

require('os').type()

Ve sonra kullanmak spawn("open")veya spawn("xdg-open")platforma bağlı?


4
Windows'ta spawn ("explorer.exe", [' stackoverflow.com'] ) deniyorum , windows explorer URL'yi açmak için varsayılan tarayıcıyı seçecektir.
Qing Xu

@PaulIrish: Maalesef bağlantınız kesildi.
mklement0

2
@QingXu harika! require('child_process').spawn('explorer', ['url'])güzel bir oneliner!
TWiStErRob

2

En kolay ve en güzel yol olan IMHO, openurl adlı bir npm paketi kullanıyor . Yapın npm install openurl. Nodejs REPL'inizde bu gerçek çabayı deneyebilirsiniz

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

İhtiyaç böyle ortaya çıkarsa onunla e-posta da gönderebilirsiniz; require("openurl").open("mailto:janedoe@example.com")

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.