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 浏览器的最佳桥梁。


🔗 相关链接

相关推荐
夏殇之殁3 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
笨鸟先飞,勤能补拙4 小时前
AI 赋能网络安全领域深度剖析
网络·人工智能·windows·安全·web安全·网络安全·github
lpfasd1234 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
新中地GIS开发老师5 小时前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
丙氨酸長鏈5 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
kyriewen6 小时前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
韭菜炒鸡肝天7 小时前
【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?
microsoft·flask·azure
梅孔立7 小时前
两种免费的翻译API调用方式详解 - Edge官方API与个人缓存服务
前端·缓存·edge
gwf2167 小时前
SSD读写速度深度解析:顺序读写vs随机读写、IOPS、延迟,你的硬盘性能到底怎么看?
git·嵌入式硬件·缓存·github·智能硬件
许彰午8 小时前
政务督办的分合模式:主办协办的并发审批
前端·javascript·政务