Як використовувати nodejs, щоб відкрити браузер за замовчуванням та перейти до певної URL-адреси


135

Я пишу заявку за допомогою Node.js.

Одна з функцій, яку я хочу створити, - це відкрити веб-браузер за замовчуванням та перейти до певної URL-адреси.

Я хочу, щоб він був портативним, щоб він працював на Windows / Mac / Linux.


3
Я думаю , це питання є те , що ви шукаєте: stackoverflow.com/questions/7664605 / ...
TomTasche

так, це працює в Mac. це працює в Windows та Linux? У мене не було в руках віконної машини
Цін Сю

1
xdg-open працює в Linux :)
Цін Сю

Відповіді:


167

Використовуйте opn, оскільки він буде працювати з проблемою крос-платформи. Щоб встановити:

$ npm install opn

Використовувати:

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 зворотний виклик викликається негайно, замість того, коли вікно закриється. Будь-які ідеї?
Сем Селікофф

2
Не впевнені, можливо, варто спробувати github.com/domenic/opener спробувати в якості альтернативного модуля з тим же API. Схоже, у нього є належний трекер випуску, на якому можна було б відкрити проблему. Це може бути просто дивним, як браузери повідомляють процес як закінчений, однак це може бути не легко виправити.
ForbesLindesay

1
Це чудова рекомендація, працює дуже добре для випадків використання, описаних ОП.
jbranchaud

2
Схоже, що відкривач працює на Mac / Windows / Linux, тоді як відкритий працює лише на Mac / Windows, тому відкривачка є кращою.
Том

2
Оновіть, щоб запропонувати opnзамість того, openяк тепер остання застаріла.
Самір Агіяр

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

1
Зауважимо, щонайменше, на Windows, &в URL-адресі слід ^&
уникати:

1
Я перетворив подібну логіку, пообіцяв її та опублікував на npm npmjs.com/package/out-url
azhar22k

6

відкритий вузол застарілий . Тепер використовуйте 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

Можливо, вам знадобиться здійснити комутатор, використовуючи значення ...

require('os').type()

А потім використовувати spawn("open")чи spawn("xdg-open")залежно від платформи?


4
У Windows, я намагаюся нереститися ("explorer.exe", [' stackoverflow.com'] ), Провідник Windows вибере браузер за замовчуванням, щоб відкрити URL-адресу.
Цін Сю

@PaulIrish: На жаль, ваше посилання зараз мертве.
mklement0

2
@QingXu дивовижно! require('child_process').spawn('explorer', ['url'])приємний oneliner!
TWiStErRob

2

Найпростіший і найновіший спосіб IMHO використовує пакет npm під назвою openurl . Зробіть a npm install openurl. Ви можете спробувати це справді швидко у вашій REPLI Nodejs

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

Ви також можете надсилати електронні листи з ним, якщо виникає така потреба; require("openurl").open("mailto:janedoe@example.com")

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.