javascript截屏

使用Html2canvas截屏

下載Html2canvas

Html2canvas加載後將會瀏覽頁面上的所有元素,集合所有頁面元素的信息,然後用戶就可以通過Html2canvas把整個頁面截圖下來。
換句話說,Html2canvas不會實際上的截圖,而是通過從DOM讀取的足夠信息去建立一個頁面的展示鏡像。
這就會導致Html2canvas只會渲染它認識的正確的DOM元素屬性,還有很多CSS屬性是不會生效的,也就渲染不出來了。

下面舉個簡單例子

完整html代碼如下

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script src="js/html2canvas.min.js"></script>
    </head>
    <body>
        <div id="box" style="margin: 20px; padding: 10px; background: orange;">
            <li>第1行</li>
            <li>第2行</li>
            <li>第3行</li>
            <li>第4行</li>
        </div>

        <script type="text/javascript">
            function AJRD_printDom(id){
                html2canvas(document.getElementById(id), { 
                    allowTaint: true, 
                    taintTest: false, 
                    onrendered: function(canvas) { 
                        canvas.id = "mycanvas"; 
                        var dataUrl = canvas.toDataURL();  //生成base64圖片數據 
                        var oPop =   window.open(dataUrl,"","width=1000,   height=500,   top=100,   left=0");   
                    } 
                });
            }
            onload=function(){
                AJRD_printDom('box');
            }
        </script>
    </body>
</html>

看下效果

js截屏

我們可以看到id爲box的div被打印成了一張圖片

再來看看截屏函數

function AJRD_printDom(id){
    html2canvas(document.getElementById(id), { 
        allowTaint: true, 
        taintTest: false, 
        onrendered: function(canvas) { 
            canvas.id = "mycanvas"; 
            var dataUrl = canvas.toDataURL();  //生成base64圖片數據 
            var oPop =   window.open(dataUrl,"","width=1000,   height=500,   top=100,   left=0");   
        } 
    });
}

你會發現這個截屏並不是真正意義上的截屏,輸入參數並不是像素寬高,而是一個dom節點。
html2canvas將這個dom節點再次渲染生成一張圖片。當拿到圖片之後,這裏是將它在新窗口中顯示出來,你也可以將它保存到任何地方!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章