我正在尝试将大型二进制数据(例如,新的Uint8Array(10000000))从网页的JavaScript(JS)传递到扩展的JS。我想通过nsIBinaryOutputStream / nsIFile(我无法从我的页面调用)将这些数据从扩展名保存到文件中。 [ATM我不知道如何从本地机器上的页面JS保存(大/二进制)数据的任何其他方法。]
我对Interaction between privileged and non-privileged pages感兴趣,但它只对传递字符串很有用。我不认为从/向base64转换10MB是个好主意。
感谢您的建议。
答案 0 :(得分:1)
好的,我已经解决了如何将任何对象从网页传递到扩展程序。
在网页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);
答案 1 :(得分:0)
如果您有文件中的数据,则可以使用nsIWebBrowserPersist
并将数据直接下载到文件中。这个文件可以压缩,也可以解压缩。您可以在这些页面上找到许多信息(带示例):