如果在Chrome上运行,createObjectURL不起作用

Eld*_*ley 8 javascript html5 canvas websocket

大家好,

我试图从websocket服务器(在.NET中)检索图像我将图像作为字节发送然后在客户端检索它,在客户端检索代码(使用canvas和JavaScript):

var c=document.GetElementById("myCanvas");
var ctx=c.getContext("2d");
ws.onmessage=function(evt)
{
    var image=new Image();
    image.src=URL.createObjectURL(evt.data);
    ctx.drawImage(image,0,0);
}
Run Code Online (Sandbox Code Playgroud)

它完美地在firefox上显示图片,但是在Chrome上,它只返回undefined并且不会通过createObjectURL加载图像我使用的是Chrome 18.0.1025.162

任何的想法?

aps*_*ers 20

来自MDN:

此方法以Chrome和Webkit为前缀window.webkitURL.createObjectURL().

您应该测试是否URL存在,然后使用适当的对象:

(window.URL ? URL : webkitURL).createObjectURL(evt.data);
Run Code Online (Sandbox Code Playgroud)

  • 我希望我早点看到这个,让我在手机上工作了大约 10 个小时。谢谢 ! (4认同)
  • 当我尝试这个时,我仍然得到一个 404 not found for my blob,并且得到一个额外的“webkitURL”已被弃用。请改用“URL”。` - 我相信这里的回复解释了原因 - http://stackoverflow.com/questions/6755401/createobjecturl-is-returning-undefined-in-chrome (2认同)
  • @JonathanBasile我的回答是从`webkitURL`测试并使用它(用`URL`作为后备).我刚刚将其更改为默认使用`URL`并使用`webkitURL`作为后备.那样有用吗?如果没有,您可能错误地使用`createObjectURL`(或以某种方式违反某些安全性假设),您应该创建一个新问题. (2认同)