Javascript 如何使用html2canvas打印网页?

Javascript 如何使用html2canvas打印网页?,javascript,jquery,html,html2canvas,Javascript,Jquery,Html,Html2canvas,我想让我的页面完全按照屏幕上显示的方式打印,并找到了一个名为html2canvas的脚本: 请参阅下面我的实现 我有两个问题: 当我点击打印按钮时,Chrome会显示打印对话框,但是页面会显示2次——首先是常规打印版本,然后是html2canvas渲染。显然我不需要常规的打印。。。我试图隐藏“尸体”,但没用 (编辑:修复了这个问题:2.我不想在渲染中显示带有“#隐藏打印”的div。但即使我像代码中所示那样隐藏它,它仍然会显示。有人知道如何确保渲染中不显示此选项吗?) 在追加画布和打印之间,添加样

我想让我的页面完全按照屏幕上显示的方式打印,并找到了一个名为html2canvas的脚本:

请参阅下面我的实现

我有两个问题:

  • 当我点击打印按钮时,Chrome会显示打印对话框,但是页面会显示2次——首先是常规打印版本,然后是html2canvas渲染。显然我不需要常规的打印。。。我试图隐藏“尸体”,但没用
  • (编辑:修复了这个问题:2.我不想在渲染中显示带有“#隐藏打印”的div。但即使我像代码中所示那样隐藏它,它仍然会显示。有人知道如何确保渲染中不显示此选项吗?)


    在追加画布和打印之间,添加样式规则以隐藏除画布之外的所有body子代,而不是body元素本身。显然,不要忘了在事后将其移除

    var hide = $('<style>').html('body *:not(canvas) { display: none !important; }').appendTo(document.head);
    ... // print
    hide.remove();
    
    var hide=$('').html('body*:not(canvas){display:none!important;}')。appendTo(document.head);
    ... // 打印
    hide.remove();
    
    渲染后隐藏,但这不会更改渲染的内容。在调用html2canvas()Oops之前隐藏它们,我指的是ID而不是类!我放入$('.hidden print').hide();在调用html2canvas之前,这解决了问题2!
    var hide = $('<style>').html('body *:not(canvas) { display: none !important; }').appendTo(document.head);
    ... // print
    hide.remove();