如何从 Visual Studio Code API 打开浏览器

Posted

技术标签:

【中文标题】如何从 Visual Studio Code API 打开浏览器【英文标题】:How to open browser from Visual Studio Code API 【发布时间】:2016-03-16 07:12:41 【问题描述】:

我只是在探索一种方法,以便从用于开发扩展的 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");
);

如何使用 vscode 类从 API 打开浏览器 URL。

【问题讨论】:

【参考方案1】:

不需要节点或外部库。

如果您使用的是 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'))

这两个都将在用户的默认浏览器中打开页面

【讨论】:

浏览器关闭时是否可以回调?好像不是。 @MichaelFlanakin 不适用于vscode.open。如果需要,您需要编写一个使用节点的 child_process 或类似名称的 vscode 扩展 @ShanKhan 不。你需要编写一个 vscode 扩展来做到这一点。看看vscode.previewhtml command 这个(例如,在 html 预览中使用 iframe 来加载页面) 好像vscode.env.open改名为vscode.env.openExternal了。 有没有办法在默认邮件客户端打开邮件地址?【参考方案2】:

您不需要安装外部依赖项。 just Node.js 库和系统命令即可轻松打开 URL。例如使用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://***.com');

【讨论】:

对于 Windows 10,我必须在开瓶器之后添加“”(两个空引号)才能使其正常工作。当您遇到 VSCode 对某些 url 的双重编码错误时,这是​​一个很好的解决方案。【参考方案3】:

我必须使用 npm open url 才能在浏览器中打开。

var openurl = require('openurl').open;
    openurl("http://google.com");

【讨论】:

以上是关于如何从 Visual Studio Code API 打开浏览器的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Visual Studio Code 连接到 MySQL 服务器

如何从 Visual Studio Code 中执行 Python 代码

如何从 OSX 的命令行打开 Visual Studio Code?

使用 Visual Studio Code 从对象值中删除尾随空格

如何使用 Visual Studio Code 启用 lintr

如何在 Visual Studio Code 中更改标尺的颜色