diff --git a/src/plugins/jquery.plugin.html2canvas.js b/src/plugins/jquery.plugin.html2canvas.js index 061ce89ae..1cbf16e6b 100644 --- a/src/plugins/jquery.plugin.html2canvas.js +++ b/src/plugins/jquery.plugin.html2canvas.js @@ -14,23 +14,37 @@ options.elements = this; options.flashcanvas = "../external/flashcanvas.min.js"; - html2canvas.logging = options && options.logging; + html2canvas.logging = options && options.logging; options.complete = function(images){ - var queue = html2canvas.Parse(this[0], images, options), - $canvas = $(html2canvas.Renderer(queue, options)), - finishTime = new Date(); + var queue = html2canvas.Parse(this[0], images, options), + $canvas = $(html2canvas.Renderer(queue, options)), + finishTime = new Date(); - if (options && options.profile && window.console && window.console.profileEnd) { - console.profileEnd(); - } - $canvas.css({ position: 'absolute', left: 0, top: 0 }).appendTo(document.body); - $canvas.siblings().toggle(); + if (options && options.profile && window.console && window.console.profileEnd) { + console.profileEnd(); + } + $canvas.css({ + position: 'absolute', + left: 0, + top: 0 + }).appendTo(document.body); + $canvas.siblings().toggle(); - $(window).click(function(){ - $canvas.toggle().siblings().toggle(); - throwMessage("Canvas Render " + ($canvas.is(':visible') ? "visible" : "hidden")); - }); - throwMessage('Screenshot created in '+ ((finishTime.getTime()-timer)) + " ms
",4000); + $(window).click(function(){ + $canvas.toggle().siblings().toggle(); + throwMessage("Canvas Render " + ($canvas.is(':visible') ? "visible" : "hidden")); + }); + throwMessage('Screenshot created in '+ ((finishTime.getTime()-timer)) + " ms
",4000); + + // test if canvas is read-able + try { + $canvas[0].toDataURL(); + } catch(e) { + if ($canvas[0].nodeName.toLowerCase() === "canvas") { + // TODO, maybe add a bit less offensive way to present this, but still something that can easily be noticed + alert("Canvas is tainted, unable to read data"); + } + } }; html2canvas.Preload(this[0], options);