Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Html画布在附加时未呈现,然后使用jquery绘制然后分离_Javascript_Jquery_Kendo Ui_Html5 Canvas - Fatal编程技术网

Javascript Html画布在附加时未呈现,然后使用jquery绘制然后分离

Javascript Html画布在附加时未呈现,然后使用jquery绘制然后分离,javascript,jquery,kendo-ui,html5-canvas,Javascript,Jquery,Kendo Ui,Html5 Canvas,我正在使用剑道ui绘图api获取网页某一部分的屏幕截图。api将图像作为数据uri返回,然后使用该uri生成图像节点 data = "data:image/png;base64,iVBORw0...." var imageNode = document.createElement("img"); imageNode.src = data; 然后我创建一个新画布并将其附加到body元素,在上面绘制图像,最后使用jQuery将其与body分离 var canvas = document.creat

我正在使用剑道ui绘图api获取网页某一部分的屏幕截图。api将图像作为数据uri返回,然后使用该uri生成图像节点

data = "data:image/png;base64,iVBORw0...."
var imageNode = document.createElement("img");
imageNode.src = data;
然后我创建一个新画布并将其附加到body元素,在上面绘制图像,最后使用jQuery将其与body分离

var canvas = document.createElement("canvas");
canvas.id = "some_random_id";
canvas.width = 1650;
canvas.height = 720;

$("body").append($(canvas));

var ctx = canvas.getContext("2d");
ctx.drawImage(imageNode, 0, 0);

$(canvas).detach();

// in the end i return this canvas in the callback so that any module that requested it can append it wherever and use it
callback(canvas);
问题是图像有时只在画布上渲染,而不是总是在画布上渲染。在我收到这个问题的前几天它就开始工作了

我在chrome调试器中尝试过,但当我在分离图像并在调试器中暂停图像的行上放置断点时,却发现了这一点

$(canvas).detach();
然后继续调试器它似乎总是工作 但如果没有调试器,它只能随机工作

我认为这可能是一个时间问题,所以我尝试在分离画布后执行超时,然后执行回调

   $(canvas).detach();
     setTimeout(function () {
        callback(canvas);
     }, 200);

但它仍然是随机渲染的,不是每次都是

我尝试创建小提琴,但您没有提供足够的代码来构建小提琴。我的第一个猜测是,在尝试附加之前,您应该检查以确保图像已加载。使用.onload methodWow!!这是正确的目标@zfrisch。我将所有代码移到imageNode.onload方法中,它就像一个符咒。我是一个堆栈溢出的初学者,我不知道我怎么能对你的评论投赞成票。非常感谢!!