Wyświetl poniżej błąd w Safari.
Nie udało się wykonać „createObjectURL” na „URL”: nie znaleziono funkcji pasującej do podanego podpisu.
Mój kod to:
function createObjectURL(object) {
return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
}
To jest mój kod do obrazu:
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);
}
}
}
}
javascript
createobject
Hardik Mandankaa
źródło
źródło
createObjectURL(...)
funkcji, kiedy pojawia się ten błąd?window.URL.createObjectURL('broken')
zgłasza błąd:Uncaught TypeError: Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.
Odpowiedzi:
AKTUALIZACJA
Rozważ unikanie
createObjectURL()
metody, podczas gdy przeglądarki wyłączają jej obsługę. Wystarczy dołączyćMediaStream
obiekt bezpośrednio dosrcObject
własnościHTMLMediaElement
np<video>
. Elementu.const mediaStream = new MediaStream(); const video = document.getElementById('video-player'); video.srcObject = mediaStream;
Jednakże, jeśli trzeba pracować z
MediaSource
,Blob
lubFile
, trzeba stworzyć URL zURL.createObjectURL()
i przypisać go doHTMLMediaElement.src
.Przeczytaj więcej szczegółów tutaj: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
Starsza odpowiedź
Wystąpił ten sam błąd, kiedy przekazałem
createObjectURL
surowe dane:window.URL.createObjectURL(data)
To musi być
Blob
,File
lubMediaSource
obiektu, a nie same dane. To zadziałało dla mnie:var binaryData = []; binaryData.push(data); window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))
Sprawdź także MDN, aby uzyskać więcej informacji: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
źródło
URL.createObjectURL()
dla strumieni multimedialnych. Jednak nie stwierdza, aby NIE używać go do wejścia do pliku, jak stwierdzono w pierwszym pytaniu.Ten błąd jest spowodowany
createObjectURL
wycofaniem tej funkcji z przeglądarki Google ChromeZmieniłem to:
do tego:
To zadziałało dla mnie.
źródło
Mój kod został uszkodzony, ponieważ używałem przestarzałej techniki. Kiedyś tak było:
video.src = window.URL.createObjectURL(localMediaStream); video.play();
Potem zastąpiłem to tym:
To działało pięknie.
EDYCJA: Ostatnio
localMediaStream
został wycofany i zastąpiony przezMediaStream
. Najnowszy kod wygląda następująco:video.srcObject = new MediaStream();
Bibliografia:
źródło
Miałem ten sam błąd dla MediaStream. Rozwiązaniem jest ustawienie strumienia na srcObject.
Z dokumentów :
źródło
Wideo z cofaniem:
try { video.srcObject = mediaSource; } catch (error) { video.src = URL.createObjectURL(mediaSource); } video.play();
Od: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
źródło
Problem polega na tym, że klucze podane w pętli nie odnoszą się do indeksu pliku.
for (var i in this.files) { console.log(i); }
Wynik powyższego kodu to:
0 length item
Ale oczekiwano:
0 1 2 etc...
Następnie błąd pojawia się, gdy przeglądarka próbuje wykonać, na przykład:
window.URL.createObjectURL(this.files["length"])
Proponuję implementację w oparciu o poniższy kod:
var files = this.files; for (var i = 0; i < files.length; i++) { var file = files[i], src = (window.URL || window.webkitURL).createObjectURL(file); ... }
Mam nadzieję, że to komuś pomoże.
Pozdrowienia!
źródło
Jeśli korzystasz z AJAX, możesz dodać opcje
xhrFields: { responseType: 'blob' }
:$.ajax({ url: 'yourURL', type: 'POST', data: yourData, xhrFields: { responseType: 'blob' }, success: function (data, textStatus, jqXHR) { let src = window.URL.createObjectURL(data); } });
źródło
Naprawiłem to, pobierając najnowszą wersję z adresu URL GgitHub GitHub
źródło