我想問你如何使用插件將功能暴露給網頁內容。 我已經安裝了jpm工具(node.js上的新cfm)來打包。Firefox插件將鉻功能暴露給網站
所以我必須使用Cu.exportFunction,它可以工作,但是當添加內容,unsafeWindow,窗口或任何上下文時,jpm run throw error undefined。 完整信息:ReferenceError:unsafeWindow未定義 對不起基本問題,但有三種方法可以創建插件,幾個類,sdk和真正可怕的文檔量,其中大多數不推薦使用或不使用。
我想保存從網站的文件訪問,沒有用戶交互。
目標Firefox是38+,平臺窗口,只用於本地。我並不關心安全問題,它是我自己的電腦,我的腳本和腳本將由我的同事在本地使用。
一段時間以來,我一直在使用enablePrivileged代碼,比變通辦法,zipjs,php本地服務器等。 mdn的工作人員解決方案對我不起作用(簡單地類似的錯誤,如果它能工作,我寧願使用沒有開銷的東西)。
來自Mozillas github的代碼不起作用(很多錯誤)。
我在做什麼一步一步來? 安裝了node.js(兩天前的最新版本),安裝了jpm(也是兩天前)。 jpm init 然後複製粘貼的代碼片段來保存畫布和導出功能。 jpm運行。 這就是一切。兩天來,我試圖讓它工作,搜索答案,搜索MDN和SO。 什麼都沒有。
它應該如何工作? 根據給定的偏好和數據,我在畫布上生成了200多個圖(代碼無關緊要),然後我希望將所有畫布保存在目錄中。我給每個畫布命名,filetype是png。 當canvas生成時,我想執行saveCanvas snipet,給它命名並繼續。
變通方法如PHP,zip或其他方式會導致超過2GB的內存開銷和幾分鐘的處理時間。有時它會消失。
我不想讓XUL擴展來交互,添加閃存或其他技術。 只需使用插件保存畫布。
我只看解決方案如何使這個片段的工作。
在此先感謝。
//https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Canvas
function saveCanvas(canvas, path, type, options) {
return Task.spawn(function *() {
var reader = new FileReader;
var blob = yield new Promise(accept => canvas.toBlob(accept, type, options));
reader.readAsArrayBuffer(blob);
yield new Promise(accept => { reader.onloadend = accept });
return yield OS.File.writeAtomic(path, new Uint8Array(reader.result), { tmpPath: path + '.tmp' });
});
}
let { Cu } = require('chrome');
Cu.exportFunction(saveCanvas, unsafeWindow, {defineAs: "saveCanvas"});
也許有更好的方法來應用它?
簡單,使用'Cu.exportFunction' :) https://developer.mozilla.org/en-US/docs/Components.utils.exportFunction真棒工作btw! – Noitidart
我正在使用這部分,上下文給定不工作 - unsafeWindow是未定義的。這些代碼也來自MDN,不是我的。 – Evil
exportFunction在這裏使用檢查出來:https://github.com/IntelLabs/RiverTrail/blob/master/extension/lib/main.js#L47 – Noitidart