我正在建立一个叫做“HTML测试”的东西。它完全运行在JavaScript上,非常酷。

最后,会弹出一个结果框,上面写着“你的结果”,它显示了他们花了多少时间,他们得到了多少百分比,以及他们在10道题中得到了多少道。我想有一个按钮,说“捕获结果”,让它以某种方式截图或div的东西,然后只显示在页面上捕获的图像,他们可以右键单击并“另存图像为”。

我真的很愿意这样做,这样他们就可以与他人分享他们的成果。我不希望他们“复制”结果,因为他们可以很容易地改变结果。如果他们改变了图片上的内容,那好吧。

有人知道怎么做吗?


当前回答

var shot1=imagify($('#widget')[0], (base64) => {
  $('img.screenshot').attr('src', base64);
});

看一下htmlshot包,然后,深入检查客户端部分:

npm install htmlshot

其他回答

var shot1=imagify($('#widget')[0], (base64) => {
  $('img.screenshot').attr('src', base64);
});

看一下htmlshot包,然后,深入检查客户端部分:

npm install htmlshot

就我所知你不能那样做,我可能错了。然而,我会用php这样做,使用php标准函数生成一个JPEG,然后显示图像,不应该是一个非常困难的工作,但取决于如何华丽的DIV的内容

在index.html中添加此脚本

<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>

使用此函数获取div标签的截图

  getScreenShot(){
    let c = this.elem.nativeElement.querySelector('.chartContainer'); // or document.getElementById('canvas');
    html2canvas(c).then((canvas:any)=>{
      var t = canvas.toDataURL().replace("data:image/png;base64,", "");
      this.downloadBase64File('image/png',t,'image');
    })
  }

downloadBase64File(contentType:any, base64Data:any, fileName:any) {
  const linkSource = `data:${contentType};base64,${base64Data}`;
  const downloadLink = document.createElement("a");
  downloadLink.href = linkSource;
  downloadLink.download = fileName;
  downloadLink.click();
}
<script src="/assets/backend/js/html2canvas.min.js"></script>


<script>
    $("#download").on('click', function(){
        html2canvas($("#printform"), {
            onrendered: function (canvas) {
                var url = canvas.toDataURL();

                var triggerDownload = $("<a>").attr("href", url).attr("download", getNowFormatDate()+"电子签名详细信息.jpeg").appendTo("body");
                triggerDownload[0].click();
                triggerDownload.remove();
            }
        });
    })
</script>

报价

这是一个11年前的答案。请忽略这个答案,并在这里查看其他最近的答案

据我所知,这是不可能的javascript。

你可以为每个结果创建一个截图,保存在某个地方,并在单击保存结果时指向用户。(我猜no的结果只有10,所以创建10个jpeg图像的结果不是一个大问题)