html2canvas通过获取页面的DOM和元素的样式信息,并将其渲染成canvas图片,从而实现给页面截图的功能。
因为每个浏览器渲染页面的方式都不尽相同,所以生成的图片也不太一样。
环境要求: jQuery
兼容性: Firefox 3.5+, Chrome, Opera, IE9
官网主页: http://html2canvas.hertzen.com/
测试生成的图片效果 有些元素的样式没有完全展示出来
测试代码:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta name="layout" content="main"> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 7 <script type="text/javascript" src="http://html2canvas.hertzen.com/build/html2canvas.js"></script> 8 9 <script type="text/javascript" > 10 $(document).ready( function(){ 11 $(".example1").on("click", function(event) { 12 event.preventDefault(); 13 html2canvas(document.body, { 14 allowTaint: true, 15 taintTest: false, 16 onrendered: function(canvas) { 17 canvas.id = "mycanvas"; 18 //document.body.appendChild(canvas); 19 //生成base64图片数据 20 var dataUrl = canvas.toDataURL(); 21 var newImg = document.createElement("img"); 22 newImg.src = dataUrl; 23 document.body.appendChild(newImg); 24 } 25 }); 26 }); 27 28 }); 29 30 </script> 31 </head> 32 <body> 33 34 Hello! 35 <div class="" style="background-color: #abc;"> 36 计算机天堂测试html5页面截图 37 <br>jsjtt.com 38 </div> 39 40 <textArea id="textArea" col="20" rows="10" ></textArea> 41 <input class="example1" type="button" value="button"> 42 生成界面如下: 43 </body> 44 </html>
说明在测试过程中出现的问题如果页面上引用跨域的图片文件调用toDataURL的时候会出错
SecurityError: The operation is insecure.
解决方法:在跨域的服务器上设置header设置为允许跨域请求
access-control-allow-origin: * access-control-allow-credentials: true
转自:http://www.jsjtt.com/webkaifa/html5/2013-10-29/42.html