Protocol Launcher 系列:Microsoft Edge 浏览器唤起的优雅方案

在介绍了 Apple 地图 的联动后,今天我们将介绍如何通过 Protocol Launcher 优雅地唤起 Microsoft Edge 浏览器,让网页打开变得更加简单。

作为开发者,你可能经常遇到这些场景:

  • 在 Electron 应用中点击链接,希望在用户默认的 Edge 浏览器中打开。
  • 从命令行工具生成一个链接,点击后直接在 Edge 中跳转到指定页面。
  • 在内部系统中提供一个按钮,快速在 Edge 中打开外部 URL。

现在,通过 Protocol Launcher ,你可以用类型安全的方式生成 microsoft-edge: 协议链接,无需手动拼接。


Microsoft Edge 与深度链接

Microsoft Edge 是微软基于 Chromium 开发的现代浏览器。它支持通过 microsoft-edge: 协议从其他应用中唤起并打开指定 URL。

然而,手动拼接这些协议链接需要记住正确的格式(如 microsoft-edge:microsoft-edge:?url= 的区别),且缺乏类型提示,容易出错。


核心能力:简洁的浏览器唤起

Protocol Launcher 为 Microsoft Edge 提供了 protocol-launcher/microsoft-edge 模块,支持以下核心功能:

  1. 直接打开浏览器:无需参数,一键唤起 Edge。
  2. 打开指定 URL:在 Edge 中打开任意网页地址。
  3. 类型安全:TypeScript 类型定义确保参数正确。

快速上手

首先,确保你的项目中已安装:

bash 复制代码
npm install protocol-launcher

在代码中你可以根据场景选择两种导入方式:

  • 按需加载(通过子路径导入),支持 Tree Shaking,体积更小;
  • 全量导入(从根包导入),写法更简单,但会引入所有已支持应用的逻辑。
typescript 复制代码
// ✅ 推荐:按需加载 Microsoft Edge 模块
import { open, openUrl } from 'protocol-launcher/microsoft-edge'

// 也可以从根包导入,但会包含所有应用模块
// import { microsoftEdge } from 'protocol-launcher'

场景一:直接打开浏览器 (open)

如果你只是想唤起 Edge 浏览器(不打开特定页面):

typescript 复制代码
import { open } from 'protocol-launcher/microsoft-edge'

const url = open()
// => 'microsoft-edge:'

这个简单的调用会生成 microsoft-edge: 协议链接,点击后将直接打开 Edge 浏览器的新标签页或主页。

场景二:打开指定 URL (openUrl)

如果你想在 Edge 中打开特定的网页:

typescript 复制代码
import { openUrl } from 'protocol-launcher/microsoft-edge'

const url = openUrl({
  url: 'https://www.google.com/',
})
// => 'microsoft-edge:?url=https://www.google.com/'

这个调用会生成完整的协议链接,点击后 Edge 将直接跳转到指定的 URL。


实战演示

在 Electron 应用中使用

假设你正在开发一个 Electron 应用,希望用户在点击链接时用 Edge 打开:

typescript 复制代码
import { openUrl } from 'protocol-launcher/microsoft-edge'
import { shell } from 'electron'

function openInEdge(url: string) {
  const edgeUrl = openUrl({ url })
  shell.openExternal(edgeUrl)
}

// 使用示例
openInEdge('https://github.com/zhensherlock/protocol-launcher')

在命令行工具中使用

如果你开发了一个 CLI 工具,想让用户快速在 Edge 中查看文档:

typescript 复制代码
import { openUrl } from 'protocol-launcher/microsoft-edge'
import { exec } from 'child_process'

function openDocs() {
  const edgeUrl = openUrl({ url: 'https://protocol-launcher.huayi-data.com/' })
  exec(`open "${edgeUrl}"`) // macOS
  // exec(`start "${edgeUrl}"`) // Windows
}

为什么选择 Protocol Launcher?

  1. 类型安全与参数提示:TypeScript 的智能补全会确保你提供了正确的参数,避免拼写错误。
  2. 一致的 API 设计:所有应用的协议生成都遵循相同的模式,学习成本低。
  3. 极简的按需加载 (Tree Shaking) :采用了模块化设计,支持按需加载以最小化包体积:
    • 推荐方式 :使用子路径导入(如 import { openUrl } from 'protocol-launcher/microsoft-edge'),这样构建工具只会打包相关的代码。
    • 全量方式 :也可以从根包导入(如 import { microsoftEdge } from 'protocol-launcher'),建议生产环境始终使用按需加载。
  4. 跨平台兼容:生成的协议链接在所有支持 Edge 的平台上都能正常工作。

结语

通过 Protocol Launcher,你可以用优雅的类型安全方式唤起 Microsoft Edge 浏览器。无论是桌面应用、命令行工具还是 Web 应用,它都是连接你的程序与 Edge 浏览器的最佳桥梁。


🔗 相关链接

相关推荐
子夜江寒10 分钟前
GitHub入门协作
github
KongHen021 小时前
uniapp-x实现自定义tabbar
前端·javascript·uni-app·unix
数据潜水员1 小时前
三层统计最小力度的四种方法
javascript·vue.js
汪子熙1 小时前
TS2320 错误的本质、触发场景与在 Angular / RxJS 项目中的系统化应对
前端·javascript·angular.js
逛逛GitHub1 小时前
一个运维人写了 12 年的开源项目,Star 刚刚破了 3 万。
github
我命由我123451 小时前
React - BrowserRouter 与 HashRouter、push 模式与 replace 模式、编程式导航、withRouter
开发语言·前端·javascript·react.js·前端框架·html·ecmascript
Devin_chen1 小时前
ES6 Class 渐进式详解
前端·javascript
小番茄夫斯基1 小时前
前端开发的过程中,需要mock 数据,但是走的原来的接口,要怎么做
前端·javascript
Devin_chen1 小时前
原型链大白话详解
javascript
daguanren2 小时前
LMRing 实测榜:GPT-5.4 登顶?Claude 4.6 还能打吗?
github·aigc