在Safari中显示以下错误。
无法在“ URL”上执行“ createObjectURL”:未找到与提供的签名匹配的函数。
我的代码是:
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);
}
}
}
}
更新
createObjectURL()
当浏览器禁用该方法时,请考虑避免该方法。只需将MediaStream
对象直接附加到例如element的srcObject
属性即可。HTMLMediaElement
<video>
const mediaStream = new MediaStream();
const video = document.getElementById('video-player');
video.srcObject = mediaStream;
但是,如果您需要与工作MediaSource
,Blob
或者File
,你必须创建一个URL URL.createObjectURL()
,并将其分配给HTMLMediaElement.src
。
在此处阅读更多详细信息:https : //developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
较旧的答案
传递给createObjectURL
原始数据时,我遇到了同样的错误:
window.URL.createObjectURL(data)
它必须是Blob
,File
或MediaSource
对象,而不是数据本身。这为我工作:
var binaryData = [];
binaryData.push(data);
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))
还要检查MDN以获取更多信息:https : //developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
造成此错误的原因createObjectURL
是Google Chrome浏览器不赞成使用该功能
我改变了这个:
video.src=vendorUrl.createObjectURL(stream);
video.play();
对此:
video.srcObject=stream;
video.play();
这对我有用。
我的代码被破坏,因为我使用的是过时的技术。过去是这样的:
video.src = window.URL.createObjectURL(localMediaStream);
video.play();
然后我将其替换为:
video.srcObject = localMediaStream;
video.play();
效果很好。
编辑:最近localMediaStream
已被弃用并替换为MediaStream
。最新的代码如下所示:
video.srcObject = new MediaStream();
参考文献:
- 不推荐使用的技术:https : //developer.mozilla.org/zh-CN/docs/Web/API/URL/createObjectURL
- 不推荐使用的现代技术:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
- 现代技术:https://developer.mozilla.org/en-US/docs/Web/API/MediaStream
我对MediaStream遇到了相同的错误。解决方案是将流设置为srcObject。
从文档:
重要说明:如果您仍然具有依靠createObjectURL()将流附加到媒体元素的代码,则需要更新代码以将srcObject直接设置为MediaStream。
后退视频:
try {
video.srcObject = mediaSource;
} catch (error) {
video.src = URL.createObjectURL(mediaSource);
}
video.play();
来自:https :
//developer.mozilla.org/zh-CN/docs/Web/API/HTMLMediaElement/srcObject
问题是循环中提供的键未引用文件的索引。
for (var i in this.files) {
console.log(i);
}
上面代码的输出是:
0
length
item
但是期望的是:
0
1
2
etc...
然后在浏览器尝试执行时发生错误,例如:
window.URL.createObjectURL(this.files["length"])
我建议根据以下代码实现:
var files = this.files;
for (var i = 0; i < files.length; i++) {
var file = files[i],
src = (window.URL || window.webkitURL).createObjectURL(file);
...
}
我希望这可以帮助某人。
问候!
如果您使用的是ajax,则可以添加以下选项xhrFields: { responseType: 'blob' }
:
$.ajax({
url: 'yourURL',
type: 'POST',
data: yourData,
xhrFields: { responseType: 'blob' },
success: function (data, textStatus, jqXHR) {
let src = window.URL.createObjectURL(data);
}
});
我修复了从GgitHub GitHub url下载最新版本的问题
文章标签:createobject , javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!