【问题标题】:createObjectURL doesnt work if run on Chrome如果在 Chrome 上运行 createObjectURL 不起作用
【发布时间】:2012-04-28 18:11:48
【问题描述】:

大家好,

我尝试从 websocket 服务器(在 .NET 中)检索图像 我将图像作为字节发送,然后在客户端检索它, 在客户端检索的代码(使用画布和 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);
}

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

有什么想法吗?

【问题讨论】:

    标签: javascript html canvas websocket


    【解决方案1】:

    来自MDN

    此方法在 Chrome 和 Webkit 中的前缀为 window.webkitURL.createObjectURL()

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

    (window.URL ? URL : webkitURL).createObjectURL(evt.data);
    

    【讨论】:

    • 我希望我早点看到这个,这让我在手机上浪费了大约 10 个小时。谢谢!
    • 当我尝试这个时,我的 blob 仍然找不到 404,并得到一个额外的 'webkitURL' is deprecated. Please use 'URL' instead. - 我相信这里的回复解释了原因 - stackoverflow.com/questions/6755401/…
    • @JonathanBasile 我的答案从webkitURL 测试并使用它(URL 作为后备)。我刚刚将其更改为默认使用 URL 并使用 webkitURL 作为后备。那样有用吗?如果没有,您可能错误地使用了createObjectURL(或违反了某些安全假设),您应该创建一个新问题。
    • 我认为我的问题实际上是我在 localhost 上进行测试——这显然是 chrome 所禁止的——我还没有通过互联网对其进行测试
    • localhost 上运行的本地服务器应该工作(但也许有某种规则反对它?)。另一方面,出于安全原因,file: URL 可能会失败,就像许多其他新 API 一样。
    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    相关资源
    最近更新 更多