You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chromium Edge中navigator.msSaveBlob的替代方案是什么?

Chromium Edge中navigator.msSaveBlob的替代方案

navigator.msSaveBlob是旧版EdgeHTML内核Edge的私有API,Chromium Edge基于Chromium内核,已经移除了这个非标准API,改用Web标准方案实现Blob下载需求,以下是两种常用替代方案:

方案一:使用URL.createObjectURL()配合a标签(通用兼容)

这是目前最广泛兼容的方案,支持所有现代浏览器(包括Chromium Edge、Chrome、Firefox等),核心逻辑是为Blob创建临时URL,通过模拟a标签点击触发下载:

function saveBlob(blob, filename) {
  // 为Blob创建临时URL
  const blobUrl = URL.createObjectURL(blob);
  // 创建隐藏的a标签
  const downloadLink = document.createElement('a');
  downloadLink.href = blobUrl;
  // 指定下载文件名
  downloadLink.download = filename;
  // 将a标签添加到页面(部分浏览器需要此步骤才能触发点击)
  document.body.appendChild(downloadLink);
  // 触发点击下载
  downloadLink.click();
  // 移除a标签并释放临时URL资源
  document.body.removeChild(downloadLink);
  URL.revokeObjectURL(blobUrl);
}

方案二:使用File System Access API(原生体验)

如果需要更贴近系统原生的保存体验(允许用户选择保存路径),可以使用Chromium Edge 86及以上版本支持的showSaveFilePicker()API,该API属于File System Access标准,需要在安全上下文(HTTPS或localhost)中使用,且必须由用户交互触发(如按钮点击):

async function saveBlobWithFilePicker(blob, defaultFilename) {
  try {
    // 调用文件选择器,让用户选择保存位置和文件名
    const fileHandle = await window.showSaveFilePicker({
      suggestedName: defaultFilename,
      // 可指定允许的文件类型,根据实际需求调整
      types: [
        {
          description: '文本文件',
          accept: { 'text/plain': ['.txt'] }
        }
      ]
    });
    // 创建可写入流并写入Blob内容
    const writableStream = await fileHandle.createWritable();
    await writableStream.write(blob);
    await writableStream.close();
  } catch (error) {
    console.error('文件保存失败:', error);
  }
}

兼容旧版Edge的写法

如果需要同时兼容旧版EdgeHTML Edge和Chromium Edge,可以添加API判断逻辑:

function downloadBlob(blob, filename) {
  if (navigator.msSaveBlob) {
    // 旧版EdgeHTML Edge专属逻辑
    navigator.msSaveBlob(blob, filename);
  } else {
    // 现代浏览器通用逻辑
    const blobUrl = URL.createObjectURL(blob);
    const downloadLink = document.createElement('a');
    downloadLink.href = blobUrl;
    downloadLink.download = filename;
    document.body.appendChild(downloadLink);
    downloadLink.click();
    document.body.removeChild(downloadLink);
    URL.revokeObjectURL(blobUrl);
  }
}

内容的提问来源于stack exchange,提问作者Ikim SS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:10:34