微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Firefox 扩展中内容脚本中不一致的 ArrayBuffer 原型

如何解决Firefox 扩展中内容脚本中不一致的 ArrayBuffer 原型

在我正在编写的 Firefox 浏览器扩展中,我希望从页面上下文中的内容脚本发出请求(相同的 cookie 和授权,没有 CORS 问题......)。 This section of the MDN 提到我可以使用 content.fetchcontent.XMLHttpRequest 来做到这一点,但我找不到关于这些或 content 本身的文档。从 ArrayBuffer 的响应中获得 content.fetch 时,我获得了一个看起来和行为类似于 ArrayBuffer 但不是 instanceof ArrayBuffer 的值。

我的假设是,我正在以某种方式在我的内容脚本的上下文中处理来自页面上下文的 ArrayBuffer,并且该值将具有不同的 ArrayBuffer 构造函数。这是我可以通过弄乱 wrappedJSObject 或其他东西来解决的问题吗?还是我在处理浏览器错误

更具体地说,以下代码的行为出乎意料。即使这是内容脚本中的唯一代码,也会出现此问题。

(async function () {
  const response = await content.fetch("./");
  console.log("response type",response instanceof Response);
  const blob = await response.blob();
  console.log("blob type",blob instanceof Blob);
  const arrayBuffer = await blob.arrayBuffer();
  console.log("array buffer",arrayBuffer);
  console.log("array buffer type",arrayBuffer instanceof ArrayBuffer);
})();

我希望这段代码能打印出来。 (最后一个字是true。)

response type true
blob type true
array buffer ArrayBuffer { byteLength: … }
array buffer type true

在实践中我明白这一点。 (最后一个字是false。)

response type true
blob type true
array buffer ArrayBuffer { byteLength: … }
array buffer type false

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。