Fix scroll to top with pages using hashtag anchors

This commit is contained in:
Niklas von Hertzen
2014-11-29 21:04:35 +02:00
parent 0579804cbb
commit 1e826e32ae
4 changed files with 82 additions and 10 deletions

12
dist/html2canvas.js vendored
View File

@ -712,6 +712,7 @@ function createWindowClone(ownerDocument, containerDocument, width, height, opti
cloneCanvasContents(ownerDocument, documentClone);
clearInterval(interval);
if (options.type === "view") {
restoreOwnerScroll(ownerDocument, x, y);
container.contentWindow.scrollTo(x, y);
}
resolve(container);
@ -724,16 +725,19 @@ function createWindowClone(ownerDocument, containerDocument, width, height, opti
documentClone.open();
documentClone.write("<!DOCTYPE html><html></html>");
// Chrome scrolls the parent document for some reason after the write to the cloned window???
if (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset) {
ownerDocument.defaultView.scrollTo(x, y);
}
restoreOwnerScroll(ownerDocument, x, y);
documentClone.replaceChild(options.javascriptEnabled === true ? documentClone.adoptNode(documentElement) : removeScriptNodes(documentClone.adoptNode(documentElement)), documentClone.documentElement);
documentClone.close();
});
}
function restoreOwnerScroll(ownerDocument, x, y) {
if (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset) {
ownerDocument.defaultView.scrollTo(x, y);
}
}
function loadUrlDocument(src, proxy, document, width, height, options) {
return new Proxy(src, proxy, window.document).then(documentFromHTML(src)).then(function(doc) {
return createWindowClone(doc, document, width, height, options);

File diff suppressed because one or more lines are too long