在前端应用中,createObjectURL 方法可以用于将 Blob 对象转换为可访问的 URL。但是,在 IE11 浏览器中,这种方式并不适用。本文将介绍如何在 IE11 中打开由 createObjectURL 创建的链接,并提供示例代码。
问题描述
在 IE11 浏览器中使用 createObjectURL 方法创建的 URL,会导致页面无法正确显示所需内容。错误信息通常为“资源找不到”,甚至可能导致浏览器崩溃。
这是因为 IE11 不支持通过 createObjectURL 方法创建的 Blob URL。相反,它需要使用另一种方法来实现类似的功能。
解决方案
要在 IE11 中打开 createObjectURL 创建的链接,我们需要使用另一个 API:URL.createObjectURL 方法。但是,与 createObjectURL 不同,它返回的不是 Blob URL,而是 msSaveOrOpenBlob 函数所需的 Blob 对象。
具体而言,我们需要将 Blob 对象传递给 msSaveOrOpenBlob 函数,该函数将打开保存或打开对话框以允许用户选择操作。
以下是代码示例:
-- -------------------- ---- ------- -- ----------------------------------- - -- ---- ----- ---- - --- -------- ---- ---- ---- - ----- -------------------------- --- --------------------------------------- ------------ - ---- - -- ----- -------- ----- --- - ----------------------- -------- ---- ---- ---- - ----- -------------------------- ---- ----------------- -
上述代码中,我们首先通过检查浏览器是否支持 msSaveOrOpenBlob 函数来确定浏览器是否为 IE11。如果是,则创建一个 Blob 对象,然后调用该函数以打开保存或打开对话框。
在其他浏览器中,我们使用 createObjectURL 方法创建一个 Blob URL,并使用 window.open 打开它。
总结
在本文中,我们解决了在 IE11 中创建由 createObjectURL 创建的链接无法正确显示的问题。我们介绍了如何使用另一个 API:URL.createObjectURL 方法,以及如何使用 msSaveOrOpenBlob 函数来打开保存或打开对话框。此外,我们还提供了示例代码,以便更好地理解这些概念。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/28977