求救 ..为什么使用 html2canvas 转化的 canvas 不能调用 toDataURL 方法?????????

u011141772 2013-06-21 01:21:23
我先用 html2canvas 把dom转化成 canvas


//将dom树转换为canvas
function print_body() {
var test = $('div.helloworld');
html2canvas(test, {
onrendered : function(canvas) {
document.body.appendChild(canvas);
}
});
alert(test)
//然后调用下载的方法
download_canvas(test);
}




//将canvas画板导出
function download_canvas(oCanvas) {

var bMouseIsDown = false;
//var oCanvas = document.getElementById("thecanvas");

oCanvas.onmousedown = function(e) {
bMouseIsDown = true;
iLastX = e.clientX
- oCanvas.offsetLeft
+ (window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft);
iLastY = e.clientY
- oCanvas.offsetTop
+ (window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop);
}
oCanvas.onmouseup = function() {
bMouseIsDown = false;
iLastX = -1;
iLastY = -1;
}
oCanvas.onmousemove = function(e) {
if (bMouseIsDown) {
var iX = e.clientX
- oCanvas.offsetLeft
+ (window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft);
var iY = e.clientY
- oCanvas.offsetTop
+ (window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop);
iLastX = iX;
iLastY = iY;
}
}

function showDownloadText() {
document.getElementById("buttoncontainer").style.display = "none";
document.getElementById("textdownload").style.display = "block";
}

function hideDownloadText() {
document.getElementById("buttoncontainer").style.display = "block";
document.getElementById("textdownload").style.display = "none";
}

function convertCanvas(strType) {
if (strType == "JPEG") {
var oImg = Canvas2Image.saveAsJPEG(oCanvas, true);
}
if (!oImg) {
alert("Sorry, this browser is not capable of saving " + strType
+ " files!");
return false;
}

oImg.id = "canvasimage";

oImg.style.border = oCanvas.style.border;
oCanvas.parentNode.replaceChild(oImg, oCanvas);

showDownloadText();
}

saveCanvas(oCanvas, "JPEG");//在这里报错 说 无法找到 toDataURL 方法
function saveCanvas(pCanvas, strType) {
var bRes = false;
if (strType == "JPEG") {
bRes = Canvas2Image.saveAsJPEG(oCanvas);
}
if (!bRes) {
alert("Sorry, this browser is not capable of saving " + strType
+ " files!");
return false;
}
}
}

之前我写好了一个 canvas 然后直接调用下载方法就可以 正常下载 为什么 html2canvas 生成的canvas 就不能调用呢
...全文
412 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
u011141772 2013-06-21
  • 打赏
  • 举报
回复
引用 3 楼 functionsub 的回复:
难道你就没发现你传进去的实际参数是一个jquery对象么?
function print_body() {
        var test = $('div.helloworld');
        html2canvas(test, {
            onrendered : function(canvas) {
                document.body.appendChild(canvas);
                //canvas生成之后,然后调用下载的方法
                download_canvas(canvas);
            }
        });
}
应该这样吧
给大神跪了 leader说我粗心 。。果然是这样
functionsub 2013-06-21
  • 打赏
  • 举报
回复
难道你就没发现你传进去的实际参数是一个jquery对象么?
function print_body() {
        var test = $('div.helloworld');
        html2canvas(test, {
            onrendered : function(canvas) {
                document.body.appendChild(canvas);
                //canvas生成之后,然后调用下载的方法
                download_canvas(canvas);
            }
        });
}
应该这样吧
u011141772 2013-06-21
  • 打赏
  • 举报
回复
u011141772 2013-06-21
  • 打赏
  • 举报
回复
求 版主 showbo 解答啊

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧