天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)截圖功能

使用JavaScript截圖,這里我要推薦兩款開源組件:一個(gè)是Canvas2Image,它可以將Canvas繪圖編程PNG/JPEG/BMP的圖像;但是光有它還不夠,我們需要給任意DOM(至少是絕大部分)截圖,這就需要html2canvas,它可以將DOM對(duì)象轉(zhuǎn)換成一個(gè)canvas對(duì)象。兩者的功能結(jié)合起來(lái),就可以把頁(yè)面上的DOM截圖成PNG或者JPEG圖像了,很酷。

Canvas2Image

它的原理是利用了HTML5的canvas對(duì)象提供了toDataURL()的API:
復(fù)制代碼 代碼如下:
var strDataURI = oCanvas.toDataURL(); 
// returns "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt..."

這樣的結(jié)果是base64編碼的(事實(shí)上,image也可以通過這種方式以字符串的形式寫死到頁(yè)面上),所以我們還需要一個(gè)base64編解碼的lib。

但是目前的缺陷也有不少,比如目前Opera和Safari只支持PNG,F(xiàn)ireFox的支持性則好得多。

生成圖片有兩種方式寫入頁(yè)面,一種是生成一個(gè)圖片對(duì)象寫入頁(yè)面DOM樹中,這也是支持性比較好的方式:
復(fù)制代碼 代碼如下:
// returns an <img> element containing the converted PNG image 
var oImgPNG = Canvas2Image.saveASPNG(oCanvas, true);

但是如果你做一個(gè)JavaScript截圖功能的話,你可能希望截圖后能夠自動(dòng)打開保存文件的“保存”對(duì)話框:

復(fù)制代碼 代碼如下:
Canvas2Image.saveASPNG(oCanvas);
// will prompt the user to save the image as PNG.

這個(gè)方式調(diào)用會(huì)生成一個(gè)mimeType為“image/octet-stream”的數(shù)據(jù)流到瀏覽器,但是“保存”對(duì)話框無(wú)法識(shí)別出圖片適當(dāng)?shù)暮缶Y名,默認(rèn)保存的文件在FireFox下是“xxx.part”這種名字,這是令人遺憾的地方,但是似乎沒有什么好辦法解決。

html2canvas

它作用于DOM加載的過程,收集其中的信息,再來(lái)繪制canvas圖像,也就是說,其實(shí)它并不是將展現(xiàn)的DOM樹截成canvas圖,而是仿照DOM樹重新繪制了一張canvas圖。于是很多CSS樣式都無(wú)法被準(zhǔn)確識(shí)別出來(lái),無(wú)法準(zhǔn)確反映到圖上。

其它的限制還有不少,比如:

Javascript必須是同域的,對(duì)于跨域的情況需要使用代理服務(wù)器(API中有參數(shù)可以指定),對(duì)于image也同樣;
●frame內(nèi)的DOM樹無(wú)法被準(zhǔn)確繪制;
●因?yàn)橐L制的是canvas圖,所以像IE8這樣的瀏覽器需要使用FlashCanvas這樣的第三方庫(kù)。

這個(gè)頁(yè)面可以測(cè)試各個(gè)網(wǎng)站使用它來(lái)截圖的效果,效果相當(dāng)不錯(cuò):

API使用的例子:

復(fù)制代碼 代碼如下:
html2canvas(
    [dom1, dom2],
    {
        logging: false,
        useCORS: false,
        proxy:   false,
        onrendered: function(canvas){
            // canvas 就是繪制的canvas是對(duì)象
        }
    }
);

對(duì)于這一類相對(duì)小眾的類庫(kù),文檔都是很差的,包括API的定義,需要閱讀源碼,代碼上寫得挺清楚的。

另外,該站點(diǎn)下載包里面還有一個(gè)JQuery的插件,對(duì)這個(gè)API做了一個(gè)封裝,可以無(wú)視。

JavaScript技術(shù)JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)截圖功能,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 在线精品视频免费观看 | 久久免费视频在线观看6 | 99爱在线观看 | 亚洲伊人色综合久久天天伊人 | 黄色片软件大全 | 竹菊影视一区二区三区 | 老头操美女| 日本另类xxxx | 男人边吃奶边挵进去呻吟漫画 | 正在播放国产尾随丝袜美女 | 亚洲精品国偷拍自产在线观看蜜臀 | 久久www成人看片 | 欧美美女性生活 | 中文人妻熟妇精品乱又伦 | 精品久久伦理中文字幕 | 国产免费人成在线看视频 | 国产午夜精品理论片在线 | 666永久视频在线 | 国产99久久亚洲综合精品西瓜tv | va亚洲va天堂va视频在线 | bl(高h)文 | 免费果冻传媒2021在线看 | 韩国污动漫无遮掩无删减电脑版 | 亚洲合集综合久久性色 | 999久久久无码国产精蜜柚 | 亚洲国产cao | 国产午夜亚洲精品不卡电影 | 免费在线观看黄色网址 | 男男女女爽爽爽视频免费 | 国产中文字幕乱码免费 | 亚洲精品视频在线免费 | 久久免费看视频 | 老太脱裤子让老头玩xxxxx | 4399的视频BD高清在线观看免费 | 亚洲人成网77777色在线播放 | 把腿张开再深点好爽宝贝 | 中文字幕亚洲欧美日韩2019 | 亚洲免费在线视频 | 亚洲国产精品综合久久一线 | 含羞草免费完整视频在线观看 | 国产扒开美女双腿屁股流白浆 |