我有一项任务,我需要在我的网页上加载网址(e.g www.yahoo.com)
并截取屏幕截图。我正在使用html2canvas进行屏幕截图并将其附加到页面正文中。
URL指定的页面已成功加载到div元素内的iframe中。但是当我尝试截取屏幕截图时,iframe区域显示为空白。
以下是previewURL
和screenshot
的代码。
//to preview the URL content
function previewUrl(url,target){
//use timeout coz mousehover fires several times
clearTimeout(window.ht);
window.ht = setTimeout(function(){
var div = document.getElementById(target);
div.innerHTML = '<iframe style="width:100%;height:100%;" frameborder="0" src="' + url + '" />';
},20);
}
function pic() {
html2canvas(document.body, {
onrendered: function(canvas) {
document.body.appendChild(canvas);
}
});
};
HTML部分就在这里:
<body>
<input type="button" class="clear-button" onclick="pic();" value="Take Screenshot" >
<a href="http://www.yahoo.com" onmouseover="previewUrl(this.href,'div1')">Hover to load</a>
<div id="div1"></div>
</body>
屏幕截图如下所示:
我被困住了,不明白为什么会这样。我想要类似于this的东西可以加载URL,然后onclick可以给我截图。
答案 0 :(得分:8)
这里的问题是你没有正确指向想要截取屏幕截图的iframe部分,而是直接指向文档正文。
你可以试试这个:
var body = $(iframe).contents().find('body')[0];
html2canvas(body, {
onrendered: function( canvas ) {
$("#content").empty().append(canvas);
},
希望这有帮助!
答案 1 :(得分:0)
似乎不可能:
该脚本不会呈现插件内容,例如Flash或Java小程序。它也不会呈现iframe内容。
http://html2canvas.hertzen.com/documentation.html#limitations