Cách sử dụng nodejs để mở trình duyệt mặc định và điều hướng đến một URL cụ thể


135

Tôi đang viết một ứng dụng bằng Node.js.

Một trong những chức năng tôi muốn tạo là mở trình duyệt web mặc định và điều hướng đến một URL cụ thể.

Tôi muốn nó có thể mang theo để nó chạy trên Windows / Mac / Linux.


3
Tôi đoán câu hỏi này là những gì bạn đang tìm kiếm: stackoverflow.com/questions/7664605/
Kẻ

vâng, nó hoạt động trong Mac. Nó có hoạt động trong Windows và Linux không? tôi không có máy cửa sổ trong tay
Qing Xu

1
xdg-open đang hoạt động trong Linux :)
Qing Xu

Câu trả lời:


167

Sử dụng opn vì nó sẽ xử lý vấn đề đa nền tảng. Để cài đặt:

$ npm install opn

Để sử dụng:

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 gọi lại được gọi ngay lập tức, thay vì khi cửa sổ được đóng lại. Có ý kiến ​​gì không?
Sam Selikoff

2
Không chắc chắn, có thể đáng để cho github.com/domenic/opener dùng thử dưới dạng một mô-đun thay thế có cùng API. Có vẻ như nó có một trình theo dõi vấn đề thích hợp, bạn có thể mở một vấn đề trên. Nó có thể chỉ là một sự kỳ quặc về cách các trình duyệt báo cáo quá trình là kết thúc, vì vậy nó có thể không dễ sửa chữa.
ForbesLindesay

1
Đây là một khuyến nghị tuyệt vời, hoạt động rất tốt cho trường hợp sử dụng được mô tả bởi OP.
jbranchaud

2
Có vẻ như công cụ mở hoạt động trên Mac / Windows / Linux trong khi mở chỉ hoạt động trên Mac / Windows nên công cụ mở là thích hợp hơn.
Tom

2
Vui lòng cập nhật để đề xuất opnthay vì opennhư sau này không được chấp nhận.
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
Cần lưu ý, ít nhất trên các cửa sổ, &trong URL phải được thoát bằng^&
Junvar

1
Tôi đã gói logic tương tự, quảng cáo nó và xuất bản lên npm npmjs.com/package/out-url
azhar22k

6

mở nút không được chấp nhận . Bây giờ sử dụng 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

Bạn có thể cần thực hiện chuyển đổi bằng cách sử dụng giá trị của ...

require('os').type()

Và sau đó sử dụng spawn("open")hay spawn("xdg-open")tùy thuộc vào nền tảng?


4
Trong windows, tôi thử sinh sản ("explorer.exe", [' stackoverflow.com'] ), windows explorer sẽ chọn trình duyệt mặc định để mở URL.
Thanh Xu

@PaulIrish: Đáng buồn thay, liên kết của bạn đã chết ngay bây giờ.
mkuity0

2
@QingXu tuyệt vời! require('child_process').spawn('explorer', ['url'])là một oneliner tốt đẹp!
TWiStErRob

2

Cách dễ nhất và gọn gàng nhất, IMHO đang sử dụng gói npm có tên openurl . Làm a npm install openurl. Bạn có thể thử điều này thực sự nhanh chóng trong REPL Nodejs của bạn

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

Bạn cũng có thể gửi email với nó nếu có nhu cầu như vậy; require("openurl").open("mailto:janedoe@example.com")

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.