1. ホーム
  2. javascript

[解決済み] URL' の 'createObjectURL' の実行に失敗しました。

2022-04-21 22:16:41

質問

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 :

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() メソッドを MediaStream オブジェクトで使用します。この使用は、仕様とブラウザによって削除されました。

MediaStream を HTMLMediaElement のソースとして設定する必要がある場合は、HTMLMediaElement に MediaStream オブジェクトを直接 srcObject プロパティを指定します。 <video> 要素を使用します。

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

しかし、もしあなたが MediaSource , Blob または File を作成する必要があります。 blob:// のあるURLは URL.createObjectURL() を作成し、それを HTMLMediaElement.src .

詳細はこちらをご覧ください。 https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject