嗨,我想在用户离开当前页面时使用html2canvas.js制作缩略图。
所以我在Controller中定义了$ rootScope捕获函数,并在$ stateProvider的onExit状态下调用它。
我想知道onExit状态如何工作,因为捕获目标DOM元素存在问题。
有两种情况需要更换页面。但只有一种情况我不知道有什么区别。
我只是猜测在页面完全更改之前应该是可行的,因为html2canvas需要的DOM元素不仅应存储在内存中,而且还应显示为HTML。在我的情况下,是由于更改页面所需的时间不同。
这就是我想知道onExit如何工作以及我缺少的原因的原因。
出现错误时,我会收到类似的消息
未捕获(承诺)在克隆文档中找到DIV错误
这是我的代码,请给我建议。
StateProvider的一部分
.state( 'thumb', {
url: '/thumb/:id',
views : {
"@" : {
templateUrl: "test.html",
controller: "testCtrl"
}
},
onExit: function( $rootScope){
$rootScope.makeThumbnail();
$rootScope.$emit("dashboard:exit");
}
})
控制器
$rootScope.makeThumbnail = () => {
const dashboard = $( '.pd-dashboard-wrap').get( 0);
html2canvas( dashboard, options).then( canvas => {
// dashboard.remove();
// canvas를 BASE64로 엔코딩 후, BLOB로 변환하기 위한 처리
const img = canvas.toDataURL( "image/png").replace( /^data:image\/(png|jpg);base64,/,'');
const blob = b64toBlob( img, "image/png");
// Mutipart data 전송을 위한 파라미터 생성
const formdata = new FormData();
formdata.append( "thumbnailImg", blob, "testfile.png");
formdata.append( "dashboardid", $scope.dashboard.id);
const config = {
transformRequest: angular.identity,
headers:{'content-type' : undefined}
}
$http.post( "/thumbnail", formdata, config).then( function( succ){
console.log("succ")
},function(err){
console.error("썸네일 생성 실패" ,err);
})
})
}