Thunderbird扩展中window.fetch()使用相对路径失败的技术咨询
Thunderbird扩展中window.fetch()相对路径问题解答
核心结论
Thunderbird扩展支持使用相对路径调用window.fetch(),但相对路径的基准由执行fetch的脚本的基础URI决定,而这个基础URI和脚本的加载方式直接相关。
针对你的场景的具体说明
你的脚本是通过Services.scriptloader.loadSubScript()加载的,此时相对路径的基准是你传入loadSubScript()的目标脚本的绝对URI所在的目录。举个例子:
- 如果调用
loadSubScript()时传入的是chrome://bidimailui/content/your-fetch-script.js - 那么在
your-fetch-script.js里调用fetch("subdir/somefile.xhtml"),实际会解析为chrome://bidimailui/content/subdir/somefile.xhtml,和你之前用的绝对路径一致。
排查Network error的可能原因
- 路径基准判断错误:比如误将
background.js的路径当作基准,而非被加载的目标脚本路径 - 相对路径拼写错误:比如目录名、文件名的大小写或拼写不符合实际文件结构
- 脚本运行上下文异常:如果
loadSubScript()的上下文参数未正确指定窗口对象,可能导致fetch的基准URI异常
验证方法
可以在执行fetch前添加代码打印解析后的绝对URI,确认路径是否正确:
// 在你的目标脚本中 const targetPath = "subdir/somefile.xhtml"; const resolvedURI = new URL(targetPath, document.baseURI).href; console.log("解析后的URI:", resolvedURI); // 对比是否和你正常工作的绝对URI一致
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

