Safariで以下のエラーを表示します。
Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.
私のコードは:
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
が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();
それはうまくいきました。
参照:
MediaStreamでも同じエラーが発生しました。ソリューションは、srcObjectにストリームを設定します。
docs から:
重要:ストリームをメディア要素に添付するためにcreateObjectURL()に依存するコードがまだある場合は、srcObjectをMediaStreamに直接設定するようにコードを更新する必要があります。
フォールバック付きのビデオ:
try {
video.srcObject = mediaSource;
} catch (error) {
video.src = URL.createObjectURL(mediaSource);
}
video.play();
From: https://developer.mozilla.org/en-US/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);
...
}
これが誰かを助けることを願っています。
ご挨拶!