濮阳杆衣贸易有限公司

主頁 > 知識庫 > html5使用html2canvas實現(xiàn)瀏覽器截圖的示例

html5使用html2canvas實現(xiàn)瀏覽器截圖的示例

熱門標(biāo)簽:漳州人工外呼系統(tǒng)排名 跟電銷機器人做同事 鄭州電銷外呼系統(tǒng)違法嗎 威海營銷外呼系統(tǒng)招商 鶴壁手機自動外呼系統(tǒng)怎么安裝 ai電銷機器人連接網(wǎng)關(guān) 農(nóng)村住宅地圖標(biāo)注 中紳電銷智能機器人 濟(jì)南辦理400電話

最近做項目為了解決全局異常信息記錄,研究了一下瀏覽器全屏截圖功能,方便用戶發(fā)現(xiàn)異常時能夠快速截圖發(fā)給管理員。最終記錄的異常信息如下,上面的【截圖報告管理員】就是使用html2canvas前端插件實現(xiàn)的。

html2canvas介紹

以前我們只能通過其他的截圖工具來截取圖像?,F(xiàn)代瀏覽器的功能已經(jīng)越來越強,隨著H5的逐漸普及,瀏覽器本身就可以截圖啦。html2canvas就是這樣一款前端插件,它的原理是將Dom節(jié)點在Canvas里邊畫出來。雖然很方便,但有以下限制:

  • 不支持iframe
  • 不支持跨域圖片
  • 不能在瀏覽器插件中使用
  • 部分瀏覽器上不支持SVG圖片
  • 不支持Flash
  • 不支持古代瀏覽器和IE,如果你想確認(rèn)是否支持某個瀏覽器,可以用它訪問 http://deerface.sinaapp.com/ 試試 :)

由于我的使用場景很簡單,記錄一下異常信息,并且異常頁面也是由自己定義的,那么html2canvas 就足夠使用了。

使用實例

引用jquery,html2canvas即可,使用代碼也很簡單。我這里使用的是 html2canvas 0.5.0 版本

 html2canvas($("#tbl_exception"), {
         onrendered: function (canvas) {
             var url = canvas.toDataURL();
              //以下代碼為下載此圖片功能
             var triggerDownload = $("<a>").attr("href", url).attr("download", getNowFormatDate()+"異常信息.png").appendTo("body");
               triggerDownload[0].click();
               triggerDownload.remove();
           }
   });

第一個參數(shù)是要截圖的Dom對象,第二個參數(shù)時渲染完成后回調(diào)的canvas對象。

Name Type Default Description
allowTaint boolean false Whether to allow cross-origin images to taint the canvas
background string #fff Canvas background color, if none is specified in DOM. Set undefined for transparent
height number null Define the heigt of the canvas in pixels. If null, renders with full height of the window.
letterRendering boolean false Whether to render each letter seperately. Necessary ifletter-spacing is used.
logging boolean false Whether to log events in the console.
proxy string undefined Url to the proxy which is to be used for loading cross-origin images. If left empty, cross-origin images won't be loaded.
taintTest boolean true Whether to test each image if it taints the canvas before drawing them
timeout number 0 Timeout for loading images, in milliseconds. Setting it to 0 will result in no timeout.
width number null Define the width of the canvas in pixels. If null, renders with full width of the window.
useCORS boolean false Whether to attempt to load cross-origin images as CORS served, before reverting back to proxy

問題分析

介紹完使用之后,說說自己使用中遇到的問題,截圖只能截取當(dāng)前屏幕內(nèi)的內(nèi)容。在查看插件源碼,進(jìn)行調(diào)試之后找到了解決方案。下面貼出源碼和修改后的代碼

源碼:

 return renderDocument(node.ownerDocument, options, node.ownerDocument.defaultView.innerWidth, node.ownerDocument.defaultView.innerHeight, index).then(function(canvas) {
        if (typeof(options.onrendered) === "function") {
            log("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas");
            options.onrendered(canvas);
        }
        return canvas;
    });

修改代碼:

   //2016-02-18修改源碼,解決BUG 對于部分不能截屏不能全屏添加自定義寬高的參數(shù)以支持
    var width = options.width != null ? options.width : node.ownerDocument.defaultView.innerWidth;
    var height = options.height != null ? options.height : node.ownerDocument.defaultView.innerHeight;
    return renderDocument(node.ownerDocument, options, width, height, index).then(function (canvas) {
        if (typeof(options.onrendered) === "function") {
            log("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas");
            options.onrendered(canvas);
        }
        return canvas;
    });

主要是讓用戶調(diào)用時能夠自定義需要截取Dom對象的寬和高,現(xiàn)在調(diào)用方式如下

            $("#btn_screen").on("click", function () {               
                html2canvas($("#tbl_exception"), {
                    height: $("#tbl_exception").outerHeight() + 20,
                    onrendered: function (canvas) {
                        var url = canvas.toDataURL();
                        //以下代碼為下載此圖片功能
                        var triggerDownload = $("<a>").attr("href", url).attr("download", getNowFormatDate()+"異常信息.png").appendTo("body");
                        triggerDownload[0].click();
                        triggerDownload.remove();
                    }
                });
            });

總結(jié)

通過前端插件即實現(xiàn)了瀏覽器全屏截圖功能,不得不說H5功能越來越強大,以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
 

標(biāo)簽:營口 惠州 蘇州 咸陽 文山 甘南 萍鄉(xiāng) 紅河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《html5使用html2canvas實現(xiàn)瀏覽器截圖的示例》,本文關(guān)鍵詞  html5,使用,html2canvas,實現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《html5使用html2canvas實現(xiàn)瀏覽器截圖的示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于html5使用html2canvas實現(xiàn)瀏覽器截圖的示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    阆中市| 叶城县| 新化县| 白玉县| 天水市| 陵川县| 姚安县| 临武县| 浑源县| 揭东县| 石城县| 东台市| 炉霍县| 高邮市| 潼关县| 上虞市| 和田市| 泸州市| 双江| 哈尔滨市| 清水县| 娱乐| 图片| 中阳县| 逊克县| 石台县| 高邑县| 页游| 满洲里市| 大宁县| 盱眙县| 科技| 祁东县| 拜泉县| 古蔺县| 永康市| 中西区| 北安市| 昌宁县| 佳木斯市| 城固县|