使用html2canvas进行屏幕捕获

我从另一个类调用screenView() 。 我能够调用它,但我没有得到strDataURI 。 我究竟做错了什么?

  function screenView(){ var image; var date = new Date(); var message, timeoutTimer, timer; var proxyUrl = "http://html2canvas.appspot.com"; var iframe,d; $(this).prop('disabled',true); var url = "http://www.facebook.com/google"; var urlParts = document.createElement('a'); urlParts.href = url; $.ajax({ data: { xhr2:false, url:urlParts.href }, url: proxyUrl, dataType: "jsonp", success: function(html){ iframe = document.createElement('iframe'); $(iframe).css({ 'visibility':'hidden' }).width($(window).width()).height($(window).height()); $('#content').append(iframe); d = iframe.contentWindow.document; alert("d-----"+d); d.open(); $(iframe.contentWindow).unbind('load'); alert("inside>>"+ $(iframe).contents().find('body')); $(iframe).contents().find('body').html2canvas({ canvasHeight: d.body.scrollHeight, canvasWidth: d.body.scrollWidth, logging:true }); alert("inside before load view"); $(iframe.contentWindow).load(function(){ alert("inside view"); $(iframe).contents().find('body').html2canvas({ canvasHeight: 30, canvasWidth: 10, logging:true, proxyUrl: proxyUrl, logger:function(msg){ $('#logger').val(function(e,i){ return i+"\n"+msg; }); }, ready: function(renderer) { alert("in side ready renderer"); $('button').prop('disabled',false); $("#content").empty(); var finishTime = new Date(); var strDataURI = renderer.canvas.toDataURL("image/jpeg"); image = strDataURI alert("last"+strDataURI); d.close(); } }); }); } }); return image; } 

你为什么不试试这个: http : //hertzen.com/experiments/jsfeedback/

这个例子对我有用