Vises under feil i Safari.
Kunne ikke utføre 'createObjectURL' på 'URL': Det ble ikke funnet noen funksjon som samsvarer med den oppgitte signaturen.
Koden min er:
function createObjectURL(object) {
return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
}
Dette er min kode for bildet:
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);
}
}
}
}
OPPDATERING
Vurder å unngå metoden createObjectURL()
, så lenge nettleserne deaktiverer støtten for den. Bare fest MediaStream
-objektet direkte til srcObject
-egenskapen til HTMLMediaElement
, for eksempel <video>
-elementet.
const mediaStream = new MediaStream();
const video = document.getElementById('video-player');
video.srcObject = mediaStream;
Men hvis du vil arbeide med MediaSource
, Blob
eller File
, må du opprette en URL med URL.createObjectURL()
og tilordne den til HTMLMediaElement.src
.
Les mer informasjon her: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
Eldre svar
Jeg opplevde samme feil da jeg sendte rådata til createObjectURL
:
window.URL.createObjectURL(data)
Det må være Blob
, File
eller MediaSource
objekt, ikke selve dataene. Dette fungerte for meg:
var binaryData = [];
binaryData.push(data);
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))
Sjekk også MDN for mer informasjon: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
Jeg fikk samme feil for MediaStream. Løsningen er å angi en strøm til srcObject.
Fra docs:
Viktig: Hvis du fremdeles har kode som er avhengig av createObjectURL() for å knytte strømmer til for å knytte strømmer til medieelementer, må du oppdatere koden slik at du ganske enkelt sette srcObject til MediaStream direkte.
Problemet er at nøklene som oppgis i løkken, ikke refererer til filens indeks.
for (var i in this.files) {
console.log(i);
}
Resultatet av koden ovenfor er:
0
length
item
Men det som var forventet var:
0
1
2
etc...
Deretter oppstår feilen når nettleseren prøver å utføre for eksempel:
window.URL.createObjectURL(this.files["length"])
Jeg foreslår en implementering basert på følgende kode:
var files = this.files;
for (var i = 0; i < files.length; i++) {
var file = files[i],
src = (window.URL || window.webkitURL).createObjectURL(file);
...
}
Jeg håper dette kan hjelpe noen.
Mange hilsener!