Tampilan kesalahan di Bawah ini di Safari.
Gagal mengeksekusi 'createObjectURL' di 'URL': Tidak ada fungsi yang ditemukan yang cocok dengan signature yang disediakan.
Kode saya adalah:
function createObjectURL(object) {
return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
}
Ini adalah Kode untuk gambar:
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);
}
}
}
}
UPDATE
Pertimbangkan untuk menghindari createObjectURL()
metode, sedangkan browser adalah menonaktifkan dukungan untuk itu. Hanya melampirkan MediaStream
objek langsung ke srcObject
milik HTMLMediaElement
misalnya <video>
elemen.
const mediaStream = new MediaStream();
const video = document.getElementById('video-player');
video.srcObject = mediaStream;
Namun, jika anda perlu untuk bekerja dengan MediaSource
, Gumpalan
atau File
, anda harus membuat URL dengan URL.createObjectURL()dan menetapkan ke
HTMLMediaElement.src`.
Baca lebih jelasnya di sini: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
Lebih Tua Menjawab
Saya mengalami kesalahan yang sama, ketika saya lulus untuk createObjectURL
data mentah:
window.URL.createObjectURL(data)
Itu harus Gumpalan
, File
atau MediaSource
objek, bukan data itu sendiri. Ini bekerja untuk saya:
var binaryData = [];
binaryData.push(data);
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))
Periksa juga MDN untuk info lebih lanjut: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
Kesalahan ini disebabkan karena fungsi createObjectURL
kadaluarsa untuk Google Chrome
Aku berubah ini:
video.src=vendorUrl.createObjectURL(stream);
video.play();
untuk ini:
video.srcObject=stream;
video.play();
Ini bekerja untuk saya.
Kode saya rusak karena saya menggunakan usang teknik. Ini digunakan untuk menjadi ini:
video.src = window.URL.createObjectURL(localMediaStream);
video.play();
Kemudian saya diganti dengan ini:
video.srcObject = localMediaStream;
video.play();
Yang bekerja dengan indah.
EDIT: baru-Baru ini localMediaStream
sudah tidak digunakan lagi dan diganti dengan MediaStream
. Terbaru kode terlihat seperti ini:
video.srcObject = MediaStream;
Referensi:
Saya memiliki kesalahan yang sama untuk MediaStream. Solusinya adalah mengatur aliran ke srcObject.
Dari docs:
Penting: Jika anda masih memiliki kode yang bergantung pada createObjectURL() untuk melampirkan sungai untuk elemen media, anda perlu memperbarui kode anda untuk hanya mengatur srcObject ke MediaStream ini diatas.
Video dengan jatuh kembali:
try {
video.srcObject = mediaSource;
} catch (error) {
video.src = URL.createObjectURL(mediaSource);
}
video.play();
Dari: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
Masalahnya adalah bahwa tombol yang disediakan di loop tidak merujuk ke indeks dari file tersebut.
for (var i in this.files) {
console.log(i);
}
Output dari kode di atas adalah:
0
length
item
Tapi apa yang diharapkan adalah:
0
1
2
etc...
Kemudian terjadi kesalahan saat browser anda mencoba untuk menjalankan, misalnya:
window.URL.createObjectURL(this.files["length"])
Saya sarankan implementasi didasarkan pada kode berikut:
var files = this.files;
for (var i = 0; i < files.length; i++) {
var file = files[i],
src = (window.URL || window.webkitURL).createObjectURL(file);
...
}
Saya berharap hal ini dapat membantu seseorang.
Salam!!!
Jika anda menggunakan ajax, adalah mungkin untuk menambahkan pilihan xhrFields: { responseType: 'gumpalan' }
:
$.ajax({
url: 'yourURL',
type: 'POST',
data: yourData,
xhrFields: { responseType: 'blob' },
success: function (data, textStatus, jqXHR) {
let src = window.URL.createObjectURL(data);
}
});