2013-04-20 153 views

回答

3

你可以做以下

var iframe=document.createElement('iframe'); 
$('body').append($(iframe)); 
setTimeout(function(){ 
    var iframedoc=iframe.contentDocument||iframe.contentWindow.document; 
    $('body',$(iframedoc)).html('<html><head></head><body><p>HI</p></body></html>'); 
    html2canvas(iframedoc.body, { 
     onrendered: function(canvas) { 
      $('body',$(document)).append(canvas); 
      $('body',$(document)).remove(iframe); 
     } 
    }); 
}, 10); 

看到整個代碼here

DEMO

+0

我更新了這個DEMO li nk今天,因爲CDN htm2canvas.js變成down ..所以我爲html2canvas.js添加anthoer鏈接 – 2016-08-04 17:14:29

+0

你有什麼想法,如果我不會把html放在文檔中(甚至隱藏),我該怎麼辦? – 2017-11-20 11:40:12

6

通常html2canvas呈現DOM元素而不是html代碼。但是你可以創建一個臨時的iFrame,讓你的html渲染在那個iFrame中,然後把生成的DOM給html2canvas。

你會發現在這個jsfiddle一個例子來玩耍,或在這裏爲您提供方便:

var html_string = "<html><head></head><body><p>HI</p></body></html>"; 
var iframe=document.createElement('iframe'); 
document.body.appendChild(iframe); 
setTimeout(function(){ 
    var iframedoc=iframe.contentDocument||iframe.contentWindow.document; 
    iframedoc.body.innerHTML=html_string; 
    html2canvas(iframedoc.body, { 
     onrendered: function(canvas) { 
      document.body.appendChild(canvas); 
      document.body.removeChild(iframe); 
     } 
    }); 
}, 10);