经常会有用到网页截取的时候,截取方法很简单,但是如果页面里GIF图很多的话,会出现截断,即GIF上下画面不一致(因为本质上全屏截图也都是先截屏幕再拼接的)。花点功夫找了下,记录之。
都是以Chrome
为例,其它浏览器就自行google咯。首先去下一个自己喜欢的全屏截图插件,传送门。
小tip:微信页面采用的是 lazy load
模式,要自己浏览一遍全文才能加载所有的GIF和图片。
然后就打开开发者模式
,快捷键 cmd+alt+i
,选择标签为 console
的一栏,将下述代码粘贴进去,回车即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| function createElement(type, callback) { var element = document.createElement(type);
callback(element);
return element; }
function freezeGif(img) { var width = img.width, height = img.height, canvas = createElement('canvas', function(clone) { clone.width = width; clone.height = height; }), attr, i = 0;
var freeze = function() { canvas.getContext('2d').drawImage(img, 0, 0, width, height);
for (i = 0; i < img.attributes.length; i++) { attr = img.attributes[i];
if (attr.name !== '"') { canvas.setAttribute(attr.name, attr.value); } }
canvas.style.position = 'absolute';
img.parentNode.insertBefore(canvas, img); img.style.opacity = 0; };
if (img.complete) { freeze(); } else { img.addEventListener('load', freeze, true); } }
function freezeAllGifs() { return new Array().slice.apply(document.images).map(freezeGif); }
freezeAllGifs();
|
代码自 Stopping GIF Animation Programmatically 处拷贝。
然后GIF图就都不动啦。
完。