无法在“ URL”上执行“ createObjectURL”:

2020/11/18 22:22 · javascript ·  · 0评论

在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对象直接附加例如elementsrcObject属性即可HTMLMediaElement<video>

const mediaStream = new MediaStream();
const video = document.getElementById('video-player');
video.srcObject = mediaStream;

但是,如果您需要与工作MediaSourceBlob或者File,你必须创建一个URL URL.createObjectURL(),并将其分配给HTMLMediaElement.src

在此处阅读更多详细信息:https : //developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject


较旧的答案

传递给createObjectURL原始数据时,我遇到了同样的错误

window.URL.createObjectURL(data)

它必须是BlobFileMediaSource对象,而不是数据本身。这为我工作:

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();

参考文献:

  1. 不推荐使用的技术:https : //developer.mozilla.org/zh-CN/docs/Web/API/URL/createObjectURL
  2. 不推荐使用的现代技术:https//developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
  3. 现代技术: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下载最新版本的问题

本文地址:http://javascript.askforanswer.com/wufazai-urlshangzhixing-createobjecturl.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!