html2canvas根據DOM元素樣式實現網頁截圖


html2canvas是一個相當不錯的JavaScript類庫,它使用了html5和css3的一些新功能特性,實現了在客戶端對網頁進行截圖的功 能。html2canvas通過獲取頁面的DOM和元素的樣式信息,並將其渲染成canvas圖片,從而實現給頁面截圖的功能。

jietu

它不需要來自服務器任何渲染,整張圖片都是在客戶端瀏覽器創建。當瀏覽器不支持Canvas時,將采用Flashcanvas或 ExplorerCanvas技術代替實現。以下瀏覽器能夠很好的支持該腳本:Firefox 3.5+, Google Chrome, Opera新的版本, IE9以上的瀏覽器。

因為每個瀏覽器渲染頁面的方式都不盡相同,所以生成的圖片也不太一樣。雖然它目前還是處理開發階段,但還是很值得期待的。

這個插件依賴於jQuery插件,建議使用最新版的。

兼容性

html2canvas能在以下的瀏覽器中完美的運行。

  • Firefox 3.5+
  • Chrome
  • Opera
  • IE9

使用方法

1、引入文件

首先我們需要引入jQuery庫和html2canvas插件文件,注意html2canvas插件文件一定要在jQuery的后面引入,不然會報錯。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://html2canvas.hertzen.com/build/html2canvas.js"></script>

2、調用插件

通過html2canvas方法調用插件,該方法接受兩個參數,第一個為要生成截圖的DOM元素,第二個參數為插件的配置

html2canvas(document.body, {
    allowTaint: true,
    taintTest: false,
    onrendered: function(canvas) {
        canvas.id = "mycanvas";
        //document.body.appendChild(canvas);
        //生成base64圖片數據
        var dataUrl = canvas.toDataURL();
        var newImg = document.createElement("img");
        newImg.src =  dataUrl;
        document.body.appendChild(newImg);
    }
});

通過一個回調函數來處理獲取到的截圖。

圖片跨域問題

在網頁的圖片中,如果有跨域圖片,調用toDataURL的時候會出錯

SecurityError: The operation is insecure.

解決方法是在跨域的服務器上設置header設置為允許跨域請求

access-control-allow-origin: *  access-control-allow-credentials: true

官網主頁http://html2canvas.hertzen.com/

本文轉自:http://www.uedsc.com/html2canvas.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM