Как открыть браузер из Visual Studio Code API

Я просто изучаю способ открыть браузер по умолчанию из Visual Studio Code API, используемого для разработки расширений.

Ниже приведен мой код:

var disposable = vscode.commands.registerCommand('extension.browser', () => {
  // The code you place here will be executed every time your command is executed
  vscode.Uri.call("http://facebook.com");
});

Как открыть URL-адрес браузера из API с помощью класса vscode.


person Shan Khan    schedule 10.12.2015    source источник


Ответы (3)


Нет необходимости в узле или внешних библиотеках.

Если вы используете VS Code 1.31+, используйте функцию vscode.env.open:

import * as vscode from 'vscode';

vscode.env.openExternal(vscode.Uri.parse('https://example.com'));

Для более старых версий VS Code используйте команду vscode.open:

vscode.commands.executeCommand('vscode.open', vscode.Uri.parse('https://example.com'))

Оба они откроют страницу в браузере пользователя по умолчанию.

person Matt Bierner    schedule 07.07.2017
comment
Можно ли получить обратный вызов, когда браузер закрыт? Не похоже. - person Michael Flanakin; 31.12.2017
comment
@MichaelFlanakin Не с vscode.open. Вам нужно написать расширение vscode, которое использует узел child_process или аналогичный, если вам нужно это сделать. - person Matt Bierner; 02.01.2018
comment
@ShanKhan Нет. Для этого вам нужно написать расширение vscode. Взгляните на vscode.previewHtml команду для этого (например, используйте iframe внутри предварительного просмотра html для загрузки страницы) - person Matt Bierner; 02.01.2018
comment
Кажется, vscode.env.open переименовали в vscode.env.openExternal. - person yumetodo; 21.02.2019
comment
есть ли способ открыть адрес электронной почты в почтовом клиенте по умолчанию? - person Bandara; 19.03.2019
comment
Попробуйте использовать адрес mailto uri: mailto:[email protected] - person Matt Bierner; 19.03.2019

Вам не нужно устанавливать внешнюю зависимость. Открыть URL-адрес можно просто с помощью просто библиотек Node.js и системных команд. Например, используйте child_process.exec, чтобы открыть URL-адрес.

Объявите такую ​​функцию:

const exec = require('child_process').exec;

function openURL(url) {
  let opener;

  switch (process.platform) {
    case 'darwin':
      opener = 'open';
      break;
    case 'win32':
      opener = 'start';
      break;
    default:
      opener = 'xdg-open';
      break;
  }

  return exec(`${opener} "${url.replace(/"/g, '\\\"')}"`);
}

а затем вызовите его из своего кода

openURL('http://stackoverflow.com');
person Jakub Synowiec    schedule 31.01.2017
comment
В Windows 10 мне пришлось добавить (две пустые кавычки) после открывателя, чтобы он работал. Это хорошее решение, когда вы сталкиваетесь с ошибкой двойной кодировки VSCode для определенных URL-адресов. - person boocs; 16.04.2021

Мне пришлось использовать npm open url, чтобы открыть в браузере.

var openurl = require('openurl').open;
    openurl("http://google.com");
person Shan Khan    schedule 10.12.2015