如何在Visual Studio代码扩展中打开浏览器窗口?

Mar*_*k M 6 visual-studio-code vscode-extensions

我正在编写Visual Studio代码扩展,并且希望能够响应命令打开带有特定url的浏览器窗口。我知道Electron具有BrowserWindow类,但似乎无法从vscode扩展中访问Electron API。

我希望可以在该工具中打开浏览器窗口,但是如果不能的话,可以在默认浏览器中打开网页。

如何通过扩展程序打开网页?

Joh*_*nry 21

这可能是最近添加的。

  1. 打开托盘(Ctrl + Shift + P)
  2. 选择“简单浏览器:预览”
  3. 输入网址

  • 多么无缝的实施啊。它还支持实时重新加载。感谢分享。 (5认同)
  • 虽然我通常更喜欢在 Chrome 中进行开发预览,但有时为了快速检查,这效果很好。对于所有看到白屏的人。您需要添加前缀“http://”或“https://”,仅输入“www.google.com”或“localhost:port-number”是行不通的,必须是“https://www.google”。 com` 或 `http://localhost:3000` 等。希望这有帮助。 (5认同)
  • 这正是我想要的,但进入网站后只是出现白屏。无论是 localhost、google、包括 https 或 www,都没关系。 (4认同)
  • 哇!这与实时服务器扩展 \(@^0^@)/ 相结合是唯一真正有效的并排 HTML 预览解决方案。 (3认同)
  • 这对我有用过一次,然后我只看到一个白色的屏幕。尝试重新加载/重新启动代码,无法解决:(代码的开发人员控制台显示警告:main.js [Violation]避免使用 document.write()。然后我用一个简单的网站再次尝试(例如 https://milosophical.me )可以工作,但带有框架的网站(例如 https://stackoverflow.com)则不行。错误:拒绝框架“https://stackoverflow.com”,因为祖先违反了内容安全策略“frame-ancestors 'self” ’” (2认同)
  • 检查这个。https://github.com/microsoft/vscode/issues/127141。有一些安全原因,所以 VS Code 不会提供任何解决方法。 (2认同)

Dan*_*eny 10

要在 VS Code 中打开浏览器窗口,您可以使用WebView API,但您需要提供 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>`;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

根据您的具体用例,还有浏览器预览扩展,它注册您可以使用的命令browser-preview.openPreview(您可能希望将浏览器预览列为依赖项以确保它已安装)。

最后,如果您只想在普通浏览器窗口中打开,您可以使用env.openExternalAPI。当在远程环境中运行时,这还将负责公开端口并映射到公开的主机名(如果它是本地主机提供的服务):

vscode.env.openExternal(Uri.parse("https://www.stackoverflow.com/"));
Run Code Online (Sandbox Code Playgroud)


小智 6


脚步:

  1. 打开vscode
  2. 单击 Ctrl + Shift + P
  3. 搜索简单浏览器显示
  4. 输入您的本地主机 URL