对'URL'执行'createObjectURL'时失败:
在Safari浏览器中显示下面的错误。
Failed to execute 'createObjectURL'on 'URL':没有找到与提供的签名相匹配的函数。
我的代码是:
function createObjectURL(object) {
return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
}
这是我的图像代码:
function myUploadOnChangeFunction() {
if (this.files.length) {
for (var i in this.files) {
if (this.files.hasOwnProperty(i)) {
var src = createObjectURL(this.files[i]);
var image = new Image();
image.src = src;
imagSRC = src;
$('#img').attr('src', src);
}
}
}
}
103
3
更新
考虑避免使用
createObjectURL()
方法,因为浏览器正在禁用对它的支持。只需将MediaStream
对象直接附加到HTMLMediaElement
的srcObject
属性上,例如<amp-video>
元素。然而,如果你需要使用
MediaSource'、
Blob'或File',你必须用
URL.createObjectURL()'创建一个URL,并将其分配给HTMLMediaElement.src
。在这里阅读更多细节:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
以前的答案
我遇到了同样的错误,当我传递给
createObjectURL
原始数据时:它必须是
Blob'、
File'或`MediaSource'对象,而不是数据本身。这对我来说是有效的:也可以在MDN上查看更多信息:https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
我对MediaStream也有同样的错误。解决办法是给srcObject设置一个流。
来自文档:
问题是,在循环中提供的键并不是指文件的索引。
上述代码的输出结果是:
但预期的是:
然后,当浏览器试图执行时,就会出现错误,比如说:
我建议根据以下代码来执行:
我希望这能帮助到别人。
问候您!