SVG Blob中能否包含可正常工作的href链接?
问题解决:Blob URL加载SVG时内部href失效的处理
可以实现SVG Blob中href正常工作,核心问题出在Blob的MIME类型识别上。
当直接使用response.blob()获取SVG内容时,浏览器可能会根据服务器响应头自动设置Blob的MIME类型,如果服务器返回的Content-Type不正确,或者fetch默认将其识别为text/plain等非SVG类型,浏览器就无法正确解析SVG内部的资源引用,导致href失效。
解决方案:手动指定Blob的MIME类型
将SVG内容以文本形式获取,再手动创建类型为image/svg+xml的Blob,确保浏览器正确识别并解析SVG:
const response = await fetch("https://examplehost.com/sample.svg"); const svgText = await response.text(); const blob = new Blob([svgText], { type: "image/svg+xml" }); const blobUrl = URL.createObjectURL(blob);
这样生成的Blob URL加载SVG时,内部的绝对路径href就能正常加载资源。如果SVG中包含相对路径href,需要先将其转换为基于原SVG地址的绝对路径(比如通过new URL(relativePath, response.url)来转换),再写入Blob内容。
内容的提问来源于stack exchange,提问作者mil2d2
相关产品推荐
相关产品推荐

