Как открыть окно браузера в расширении кода Visual Studio?

Я пишу расширение кода визуальной студии, и я хотел бы иметь возможность открывать окно браузера с определенным URL-адресом в ответ на команду. Я знаю, что у Electron есть класс BrowserWindow, но похоже, что API Electron недоступен из расширения vscode.

Я бы предпочел, чтобы окно браузера открывалось в инструменте, но я не против открыть веб-страницу в браузере по умолчанию, если это невозможно.

Как открыть веб-страницу из расширения?


person Mark M    schedule 06.05.2016    source источник
comment
stackoverflow .com/questions/34205481/   -  person Steffen    schedule 11.05.2016
comment
Да, ответ, на который ссылается @Steffen, откроет браузер за пределами VS Code. Это мой запасной план. Однако для моего расширения было бы немного лучше, если бы окно браузера было в VS Code. Можно ли открыть браузер в самом инструменте?   -  person Mark M    schedule 19.08.2016
comment
@MattBierner Ваш первый предложенный дубликат охватывает то, о чем говорит Марк выше: он хочет открыть в VS Code, а не во внешнем браузере, таком как детали этого вопроса. Второй вопрос, скорее всего, будет по праву помечен как дубликат этого вопроса, поскольку вопрос Марка предшествует ему более чем на год.   -  person ruffin    schedule 12.05.2021


Ответы (2)


Возможно, это было добавлено недавно.

  1. Откройте поддон (Ctrl+Shift+P)
  2. Выберите Простой браузер: Предварительный просмотр
  3. Введите веб-адрес
person John Henry    schedule 06.03.2021
comment
Это было бы именно то, что я хочу, но после входа на сайт просто появляется белый экран. Не имеет значения, является ли это локальным хостом, Google, включает в себя https или www. - person Syzygy; 07.05.2021
comment
Какая плавная реализация. Он также поддерживает перезагрузку в реальном времени. Спасибо, что поделился. - person RBT; 27.07.2021

Чтобы открыть окно браузера внутри VS Code, вы можете использовать API WebView, хотя вы необходимо предоставить HTML-контент, а не URL-адрес:

export function activate(context: vscode.ExtensionContext) {
  context.subscriptions.push(
    vscode.commands.registerCommand('catCoding.start', () => {
      // Create and show panel
      const panel = vscode.window.createWebviewPanel(
        'catCoding',
        'Cat Coding',
        vscode.ViewColumn.One,
        {}
      );

      // And set its HTML content
      panel.webview.html = getWebviewContent();
    })
  );
}

function getWebviewContent() {
  return `<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cat Coding</title>
</head>
<body>
    <img src="https://media.giphy.com/media/JIX9t2j0ZTN9S/giphy.gif" width="300" />
</body>
</html>`;
}

введите описание изображения здесь

В зависимости от вашего конкретного варианта использования также есть расширение Browser Preview. который регистрирует команду browser-preview.openPreview, которую вы могли бы использовать (вы, вероятно, захотите указать предварительный просмотр браузера в качестве зависимости, чтобы убедиться, что он установлен).

И, наконец, если вы просто хотите открыть в обычном окне браузера, вы можете использовать env.openExternal API. При работе в удаленных средах это также позаботится об открытии портов и сопоставлении с открытым именем хоста (если это служба, обслуживаемая локальным хостом):

vscode.env.openExternal(Uri.parse("https://www.stackoverflow.com/"));
person Danny Tuppeny    schedule 29.12.2019