Safari에서 아래 오류가 표시됩니다.
‘URL’에서 ‘createObjectURL’을 (를) 실행하지 못했습니다. 제공된 서명과 일치하는 기능이 없습니다.
내 코드는 다음과 같습니다
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()
브라우저가 메소드를 지원하지 않는 동안 메소드를 피 하십시오. 예를 들어 element MediaStream
의 srcObject
속성에 직접 객체를 연결하십시오 .HTMLMediaElement
<video>
const mediaStream = new MediaStream();
const video = document.getElementById('video-player');
video.srcObject = mediaStream;
그러나, 당신은 작업에 필요한 경우 MediaSource
, Blob
또는 File
당신이있는 URL을 생성해야합니다, URL.createObjectURL()
그리고에 할당합니다 HTMLMediaElement.src
.
자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject를 참조하십시오.
이전 답변
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
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();
그것은 아름답게 작동했습니다.
편집 : 최근 localMediaStream
에 더 이상 사용되지 않으며로 대체되었습니다 MediaStream
. 최신 코드는 다음과 같습니다.
video.srcObject = MediaStream;
참고 문헌 :
답변
MediaStream에 대해 동일한 오류가 발생했습니다. 솔루션은 스트림을 srcObject로 설정합니다.
로부터 문서 :
중요 사항 : 미디어 요소에 스트림을 첨부하기 위해 createObjectURL ()에 의존하는 코드가 여전히 있으면 코드를 업데이트하여 srcObject를 MediaStream에 직접 설정하십시오.
답변
대체 동영상 :
try {
video.srcObject = mediaSource;
} catch (error) {
video.src = URL.createObjectURL(mediaSource);
}
video.play();
보낸 사람 :
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);
...
}
이것이 누군가를 도울 수 있기를 바랍니다.
인사말!
답변
ajax를 사용하는 경우 옵션을 추가 할 수 있습니다 xhrFields: { responseType: 'blob' }
.
$.ajax({
url: 'yourURL',
type: 'POST',
data: yourData,
xhrFields: { responseType: 'blob' },
success: function (data, textStatus, jqXHR) {
let src = window.URL.createObjectURL(data);
}
});