Safari 확장 프로그램을 빌드하여 웹 페이지의 스크린 샷을 공유하려하지만 이미지를 Swift로 다시 전달하려고하면 Safari가 불안정 해지고 중간 작업이 중단되는 오류가 발생합니다. .Safari Extension에서 dispatchMessage를 사용할 때 WebKitSubtleCrypto 오류가 발생했습니다.
사용자가 툴바 버튼을 누르면 선택한 텍스트가 표시되고 웹 페이지의 스크린 샷이 저장됩니다. userInfo 사전을 통해 이들 두 가지를 전달하려고합니다. 내가 코드를 dispatchMessage 호출로 주석 처리 한 경우 오류가 표시되지 않습니다. - 스크립트와 함께 제공 다른 파일에
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 최신가) : 여기
WebKitSubtleCrypto is deprecated. Please use SubtleCrypto instead.
내 JS 코드입니다 : 내가 디스패치 호출을 주석 처리를 제거하면 나는 다음과 같은 오류가 표시 확장자. 1
편집 한 후 좀 더이 오류 만 messageDipatch 통화에서 '스크린 샷'객체를 전달과 관련이있다 것처럼 보이는 테스트. 스크린 샷을 꺼내서 selectedText 데이터 만 전달하면 예상대로 작동합니다. 나는 또한 'convertCanvasToImage()'호출을 통해 실행하는 대신 캔버스를 통해 스크린 샷을 전달하려고 시도했지만 동일한 오류가 발생합니다.