我正在尝试捕捉页面并将其canvas.toDataURL结果发布到外部服务器。一切都很好,但是我需要在访问者离开页面之前(通常是在提交表单之后)截屏。我要做的是使用JQ为 beforeunload 事件添加处理程序,如下所示:
$(window).bind('beforeunload', function(){
html2canvas(document.body, {async: true, logging: true}).then(function(canvas){
var data = canvas.toDataURL('image/png', 0.5);
$.ajax({
type: 'POST',
url: 'apiurl.php',
data: {"screenshot":data},
success: function(){},
async:true
});
});
});
问题是 html2canvas 是异步的,并且其async标志(无论设置为true还是false)都不会改变其行为。似乎没有一种使 html2canvas 同步拍摄屏幕截图的本地方法。因此该页面不会等待其执行,只是让访问者离开,因此页面中的 html2canvas 和 $。ajax 没有机会正确完成。>
即使我使 $。ajax 帖子同步,它仍然不能解决问题,因为原始调用 html2canvas 仍然是异步的。
如何使页面等待 html2canvas 和 $。ajax 完成?有人有什么建议吗?