我正在尝试将大型二进制数据(例如 new Uint8Array(10000000))从网页的 JavaScript (JS) 传递到扩展的 JS。我希望通过 nsIBinaryOutputStream/nsIFile (我无法从我的页面调用)将这些数据从扩展名保存到文件中。 [ATM 我不知道任何其他方法如何从本地计算机上的页面 JS 保存(大/二进制)数据。]
我对 Interaction between privileged and non-privileged pages 很生气,但它仅对传递字符串有用。我不认为将 10MB 转换为 Base64 是个好主意。
- 是否可以将此类数据传递给扩展程序?
- 如果是的话,该怎么办?
- 我不应该使用 JS XPCOM component ?
感谢您的建议。
最佳答案
好的,我已经解决了如何将任何对象从网页传递到扩展程序。
在网页 JavaScript (JS) 中:
var element = document.createElement("foo");
document.documentElement.appendChild(element);
var event = document.createEvent("CustomEvent");
event.initCustomEvent("bar", true, false, anyObject);
element.dispatchEvent(event);
在扩展 JS 中:
document.addEventListener("bar", function(e) {
// use e.detail here
}, false, true);
关于javascript - 将二进制数据从网页传递到 Firefox 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13915379/