Javascript context.drawImage()不';t使用新的Image()实例(chrome)

Javascript context.drawImage()不';t使用新的Image()实例(chrome),javascript,image,google-chrome,canvas,preloading,Javascript,Image,Google Chrome,Canvas,Preloading,我试图弄明白为什么在画布上绘制之前,图像预加载的经典方式是在chrome上触发“类型错误” 让我们看看情况: 我尝试以3种不同的方式预加载图像: 创建新的Image()实例 创建图像元素 创建jQuery图像对象 或者,如果您喜欢某些代码: var canvas1 = document.getElementById('canvas-1'), context1 = canvas1.getContext('2d'), image1 = new Image(), canvas2

我试图弄明白为什么在画布上绘制之前,图像预加载的经典方式是在chrome上触发“类型错误”

让我们看看情况:

我尝试以3种不同的方式预加载图像:

  • 创建新的Image()实例
  • 创建图像元素
  • 创建jQuery图像对象
  • 或者,如果您喜欢某些代码:

    var canvas1 = document.getElementById('canvas-1'),
        context1 = canvas1.getContext('2d'),
        image1 = new Image(),
        canvas2 = document.getElementById('canvas-2'),
        context2 = canvas2.getContext('2d'),
        image2 = document.createElement('img'),
        $canvas3 = $('#canvas-3'),
        context3 = $canvas3.get(0).getContext('2d'),
        $image3 = $('<img>'),
        loadImage = function (image, context, debugIndice) {
            debugIndice = debugIndice || -1;
            image.onload = function () {
                try {
                    context.drawImage(this, 0, 0, 100, 100);
                }
                catch (e) {
                    console.log('error for debugIndice', debugIndice, e, this);
                }
            }
            image.src = "http://upload.wikimedia.org/wikipedia/commons/8/87/Google_Chrome_icon_%282011%29.png";
        };
    
    loadImage(image1, context1, 1);
    loadImage(image2, context2, 2);
    loadImage($image3.get(0), context3, 3);
    
    var canvas1=document.getElementById('canvas-1'),
    context1=canvas1.getContext('2d'),
    image1=新图像(),
    canvas2=document.getElementById('canvas-2'),
    context2=canvas2.getContext('2d'),
    image2=document.createElement('img'),
    $canvas3=$(“#canvas-3”),
    context3=$canvas3.get(0.getContext('2d'),
    $image3=$('
    请注意这里的天气

    我只有第一个loadImage调用的类型错误

    我在公司的Windows上使用Google Chrome 27.0.1453.94,在Mac OS X上使用Google Chrome 27.0.1453.93,两者都是x64平台

    这段代码在Firefox、甚至IE9中都能正常工作(我发誓,我不是在开玩笑)

    有人知道Chrome中的Image()类问题吗

    编辑:以下是错误的屏幕:

    你可以看真实尺寸的

    这不是一个大问题,无论如何,我将使用jQuery方式,但我真的很想知道原因是什么,为什么我要浪费一些时间来修复它

    我看了一下这个


    我仍然在问,因为我不确定它是否是相同的?!

    这让我很痛苦,我没有更好的答案,但在打开和关闭所有扩展,尝试beta和dev频道后,最终起作用的是重新启动我的计算机。现在drawImage工作正常:(

    这不完全是一个解决方案,因为这是一个Chrome bug。但这是他们的追踪器上的相关Chrome bug。这是一个已知问题,应该在不久的将来修复:


    同时,使用
    document.createElement(“img”)
    而不是
    new Image()

    这里也没有“类型错误”(Chrome 27)Hummm奇怪,你们能告诉我你们在哪个平台上工作吗?无法在Chrome 25和Chrome 29(dev)上重现您的问题在Ubuntu 12.04上。你确定这不是某种缓存问题吗?是的,绝对确定!无法在Win 7(x64)下的Chrome 27.0.1453.94上复制。可能是一个实用程序或安全程序干扰了Chrome?是的,我之前看到过这个问题,请看我问题中的“bug”链接:)最后我使用了$(“”)来自jQuery!我有一个问题,图像没有加载,但是onload事件无论如何都会触发,因此没有绘制图像,并且发生错误。Strang想,实际上,您的图像本身是否会在任何情况下受到二进制损坏?