html2canvas.js 要改2处代码
第1处代码 line 603
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
|
window.html2canvas =
function
(nodeList, options) {
var
index = html2canvasCloneIndex++;
options = options || {};
if
(options.logging) {
window.html2canvas.logging =
true
;
window.html2canvas.start = Date.now();
}
options.async =
typeof
(options.async) ===
"undefined"
?
true
: options.async;
options.allowTaint =
typeof
(options.allowTaint) ===
"undefined"
?
false
: options.allowTaint;
options.removeContainer =
typeof
(options.removeContainer) ===
"undefined"
?
true
: options.removeContainer;
options.javascriptEnabled =
typeof
(options.javascriptEnabled) ===
"undefined"
?
false
: options.javascriptEnabled;
options.imageTimeout =
typeof
(options.imageTimeout) ===
"undefined"
? 10000 : options.imageTimeout;
options.renderer =
typeof
(options.renderer) ===
"function"
? options.renderer : CanvasRenderer;
options.strict = !!options.strict;
if
(
typeof
(nodeList) ===
"string"
) {
if
(
typeof
(options.proxy) !==
"string"
) {
return
Promise.reject(
"Proxy must be used when rendering url"
);
}
var
width = options.width !=
null
? options.width : window.innerWidth;
var
height = options.height !=
null
? options.height : window.innerHeight;
return
loadUrlDocument(absoluteUrl(nodeList), options.proxy, document, width, height, options).then(
function
(container) {
return
renderWindow(container.contentWindow.document.documentElement, container, options, width, height);
});
}
var
node = ((nodeList === undefined) ? [document.documentElement] : ((nodeList.length) ? nodeList : [nodeList]))[0];
node.setAttribute(html2canvasNodeAttribute + index, index);
//return renderDocument(node.ownerDocument, options, node.ownerDocument.defaultView.innerWidth, node.ownerDocument.defaultView.innerHeight, index).then(function(canvas) {
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;
});
};
|
第2处 line 633
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
|
function
renderWindow(node, container, options, windowWidth, windowHeight) {
var
clonedWindow = container.contentWindow;
var
support =
new
Support(clonedWindow.document);
var
imageLoader =
new
ImageLoader(options, support);
var
bounds = getBounds(node);
var
width = options.type ===
"view"
? windowWidth : documentWidth(clonedWindow.document);
var
height = options.type ===
"view"
? windowHeight : documentHeight(clonedWindow.document);
var
renderer =
new
options.renderer(width, height, imageLoader, options, document);
var
parser =
new
NodeParser(node, renderer, support, imageLoader, options);
return
parser.ready.then(
function
() {
log(
"Finished rendering"
);
var
canvas;
if
(options.type ===
"view"
) {
canvas = crop(renderer.canvas, {width: renderer.canvas.width, height: renderer.canvas.height, top: 0, left: 0, x: 0, y: 0});
}
else
if
(node === clonedWindow.document.body || node === clonedWindow.document.documentElement) {
// xiaomin modify
canvas = renderer.canvas;
}
else
if
(options.scale){
// xiaominzh modify
var
scale = options.scale || 1;
canvas = crop(renderer.canvas, {width: bounds.width * scale, height:bounds.height * scale, top: bounds.top *scale, left: bounds.left *scale, x: 0, y: 0});
}
else
{
canvas = crop(renderer.canvas, {width: options.width !=
null
? options.width : bounds.width, height: options.height !=
null
? options.height : bounds.height, top: bounds.top, left: bounds.left, x: clonedWindow.pageXOffset, y: clonedWindow.pageYOffset});
}
cleanupContainer(container, options);
return
canvas;
});
}
|
如何使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
var
shareContent = $(
"#share-person-report"
)[0];
//需要截图的包裹的DOM 元素
var
width = shareContent.offsetWidth;
//获取dom 宽度
var
height = shareContent.offsetHeight;
//获取dom 高度
var
canvas = document.createElement(
"canvas"
);
//创建一个canvas节点
var
scale = 2;
//定义任意放大倍数 支持小数
canvas.width = width * scale;
//定义canvas 宽度 * 缩放
canvas.height = height * scale;
//定义canvas高度 *缩放
canvas.getContext(
"2d"
).scale(scale,scale);
//获取context,设置scale
html2canvas($(
'#share-person-report'
), {
allowTaint:
true
,
taintTest:
false
,
useCORS:
true
,
background :
'#fff'
,
scale:scale,
width:width,
height:height,
canvas:canvas,
onrendered:
function
(cav) {
var
src = cav.toDataURL();
var
html =
"<img src='"
+src+
"' class='canvas'/>"
;
$(
'#share-person-report'
).html(html);
}
});
|
附件:http://down.51cto.com/data/2366743
版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任
本文转自 antlove 51CTO博客,原文链接:http://blog.51cto.com/antlove/1935082