js截屏


使用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圖片數(shù)據(jù) 
                        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被打印成了一張圖片

再來看看截屏函數(shù)

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

你會發(fā)現(xiàn)這個截屏并不是真正意義上的截屏,輸入?yún)?shù)并不是像素寬高,而是一個dom節(jié)點。
html2canvas將這個dom節(jié)點再次渲染生成一張圖片。當拿到圖片之后,這里是將它在新窗口中顯示出來,你也可以將它保存到任何地方!


最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,168評論 1 92
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,217評論 25 708
  • 之前通過深入學習DOM的相關知識,看了慕課網(wǎng)DOM探索之基礎詳解篇這個視頻(在最近看第三遍的時候,準備記錄一點東西...
    微醺歲月閱讀 4,766評論 2 61
  • 在考試中結(jié)束了兵荒馬亂的一天,也可以說是驚險刺激的一天。這一天,有失落,有絕望,有感動,有感激。各種情緒交織在一起...
    閑看新晴閱讀 156評論 0 0
  • 大家生活當中,應該都會見到過路邊擺地攤兒的,而且看到的大多數(shù)人是在晚上或者是早晨出來擺地攤。那印象當中的擺地攤兒,...
    守望小確幸閱讀 924評論 5 17

友情鏈接更多精彩內(nèi)容