Safari'de Below hatasını görüntüleyin.
'URL' üzerinde 'createObjectURL' çalıştırılamadı: Sağlanan imzayla eşleşen bir işlev bulunamadı.
Benim kodum:
function createObjectURL(object) {
return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
}
Bu benim görüntü kodum:
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);
}
}
}
}
GÜNCELLEME
Tarayıcılar bu desteği devre dışı bırakırken createObjectURL()
yönteminden kaçınmayı düşünün. MediaStreamnesnesini doğrudan
HTMLMediaElementöğesinin
srcObjectözelliğine ekleyin, örneğin
const mediaStream = new MediaStream();
const video = document.getElementById('video-player');
video.srcObject = mediaStream;
Ancak, MediaSource
, Blob
veya File
ile çalışmanız gerekiyorsa, URL.createObjectURL()
ile bir URL oluşturmanız ve bunu HTMLMediaElement.src
öğesine atamanız gerekir.
Daha fazla bilgi için: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
Daha Eski Cevap
Aynı hatayı createObjectURL
ham verisine geçtiğimde de yaşadım:
window.URL.createObjectURL(data)
Verinin kendisi değil, Blob
, File
veya MediaSource
nesnesi olmalıdır. Bu benim için işe yaradı:
var binaryData = [];
binaryData.push(data);
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))
Daha fazla bilgi için MDN'ye de göz atın: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
MediaStream için de aynı hatayı aldım. Çözüm, srcObject'e bir akış ayarlamaktır.
Dokümanlardan]1:
Önemli: Hala createObjectURL() işlevine dayanan bir kodunuz varsa
akışları medya öğelerine eklediğinizde, kodunuzu şu şekilde güncellemeniz gerekir srcObject öğesini doğrudan MediaStream öğesine ayarlamanız yeterlidir.
Sorun, döngüde sağlanan anahtarların dosyanın dizinine atıfta bulunmamasıdır.
for (var i in this.files) {
console.log(i);
}
Yukarıdaki kodun çıktısı şöyledir:
0
length
item
Ama beklenen şuydu:
0
1
2
etc...
Ardından, örneğin tarayıcı yürütmeye çalıştığında hata oluşur:
window.URL.createObjectURL(this.files["length"])
Aşağıdaki koda dayalı bir uygulama öneriyorum:
var files = this.files;
for (var i = 0; i < files.length; i++) {
var file = files[i],
src = (window.URL || window.webkitURL).createObjectURL(file);
...
}
Umarım bu birilerine yardımcı olabilir.
Selamlar!