html2canvas - 没有iframe的截图

时间:2013-09-11 09:15:16

标签: javascript jquery iframe webpage-screenshot html2canvas

我有一项任务,我需要在我的网页上加载网址(e.g www.yahoo.com)并截取屏幕截图。我正在使用html2canvas进行屏幕截图并将其附加到页面正文中。

URL指定的页面已成功加载到div元素内的iframe中。但是当我尝试截取屏幕截图时,iframe区域显示为空白。

以下是previewURLscreenshot的代码。

//to preview the URL content
function previewUrl(url,target){
    //use timeout coz mousehover fires several times
    clearTimeout(window.ht);
    window.ht = setTimeout(function(){
    var div = document.getElementById(target);
    div.innerHTML = '<iframe style="width:100%;height:100%;" frameborder="0" src="' + url + '" />';
    },20);      
}

function pic() {
      html2canvas(document.body, {
      onrendered: function(canvas) {
          document.body.appendChild(canvas);
         }
     });
 };

HTML部分就在这里:

<body>
    <input type="button" class="clear-button" onclick="pic();" value="Take Screenshot" >
    <a href="http://www.yahoo.com" onmouseover="previewUrl(this.href,'div1')">Hover to load</a>
    <div id="div1"></div>

</body>

屏幕截图如下所示: enter image description here

我被困住了,不明白为什么会这样。我想要类似于this的东西可以加载URL,然后onclick可以给我截图。

2 个答案:

答案 0 :(得分:8)

这里的问题是你没有正确指向想要截取屏幕截图的iframe部分,而是直接指向文档正文。

你可以试试这个:

var body = $(iframe).contents().find('body')[0];
        html2canvas(body, {
            onrendered: function( canvas ) {
                $("#content").empty().append(canvas);
            }, 

希望这有帮助!

答案 1 :(得分:0)

似乎不可能:

  

该脚本不会呈现插件内容,例如Flash或Java小程序。它也不会呈现iframe内容。

http://html2canvas.hertzen.com/documentation.html#limitations