如何使用beforeunload事件使用html2canvas截取页面的屏幕截图

时间:2019-03-07 11:07:02

标签: javascript html2canvas

我正在尝试捕捉页面并将其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 完成?有人有什么建议吗?

0 个答案:

没有答案