截取整个网页的屏幕截图

时间:2013-04-08 16:25:05

标签: javascript html5 canvas

需要一个仅使用javascript且没有额外库文件的工作代码( - > jquery,...) 从整个网页上截取屏幕截图。 (从上到下)

目前我有这个不起作用的原因吗?

<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function () {

var window = document.getElementById('item');
var canvas = document.getElementById('my-canvas');
var ctx = canvas.getContext("2D");
ctx.drawImage(window, 0,0, 100, 200, "rgb(255,255,255)");
canvas.toDataURL("image/png");

});
</script>
</head>
<body id="item">
test website
<canvas id='my-canvas'></canvas>

2 个答案:

答案 0 :(得分:2)

这并不容易,但对于其他人来说,浏览引擎。 因为使用blob(善意克隆整个网页)。

urlsToAbsolute(document.images);
urlsToAbsolute(document.querySelectorAll("link[rel='stylesheet']"));
urlsToAbsolute(document.scripts);

var screenshot = document.documentElement.cloneNode(true);
var blob = new Blob([screenshot.outerHTML], {type: 'text/html'});
window.open(window.URL.createObjectURL(blob));
screenshot.dataset.scrollX = window.scrollX;
screenshot.dataset.scrollY = window.scrollY;
screenshot.style.pointerEvents = 'none';
screenshot.style.overflow = 'hidden';
screenshot.style.userSelect = 'none';

var script = document.createElement('script');
script.textContent = '(' + addOnPageLoad_.toString() + ')();';
screenshot.querySelector('body').appendChild(script);

window.addEventListener('DOMContentLoaded', function(e) {
    var scrollX = document.documentElement.dataset.scrollX || 0;
    var scrollY = document.documentElement.dataset.scrollY || 0;
    window.scrollTo(scrollX, scrollY);
});

我发现你可以在chrome项目中阅读更多内容: http://www.html5rocks.com/en/tutorials/streaming/screenshare/

答案 1 :(得分:0)

您可以尝试phantom.js之类的内容。它是一个“带有JavaScript API的无头WebKit脚本”,允许您进行屏幕捕获。

根据我的经验,它运作良好。