我正在嘗試構建Safari擴展以共享網頁截圖,但是當我嘗試將圖像傳回Swift時,出現一個錯誤,導致Safari不穩定並殺死了我的任務。在Safari擴展中使用dispatchMessage時出現WebKitSubtleCrypto錯誤
這個想法是,當用戶點擊工具欄按鈕時,任何選定的文本和網頁的屏幕截圖都將被保存。我試圖通過userInfo字典通過這兩個。如果我將dispatchMessage調用註釋掉的情況下運行我的代碼,我沒有看到任何錯誤。如果我取消調度呼叫我看到下列錯誤:
WebKitSubtleCrypto is deprecated. Please use SubtleCrypto instead.
這裏是我的js代碼:
document.addEventListener("DOMContentLoaded", function(event) {
safari.self.addEventListener("message", handleMessage);
});
function handleMessage(event) {
var selectedText = window.getSelection().toString();
var screenshot;
if (window.top === window) {
html2canvas(document.getElementsByTagName('html')).then(function(canvas) {
screenshot = convertCanvasToImage(canvas);
console.log("canvas image: " + screenshot)
safari.extension.dispatchMessage("test", {"selectedText": selectedText, "screenshot" : canvas});
});
}
}
function convertCanvasToImage(canvas) {
var image = new Image();
image.src = canvas.toDataURL("image/png");
return image;
}
的html2canvas(最新 - 0.5.0-BETA4)腳本與打包其他文件擴展名。
編輯1
經過一些測試,它看起來就好像此錯誤只與通過了「截圖」對象在messageDipatch調用來完成。如果我取出屏幕截圖並只傳遞selectedText數據,則按預期工作。我也試圖通過作爲畫布傳遞屏幕截圖,而不是通過'convertCanvasToImage()'調用運行它,但是我得到了與此相同的錯誤。