2017-10-06 9 views
0

페이지로드시 동적으로 src가 설정되는 img 요소가 페이지에 있습니다 (상황에 따라 다른 이미지가 있고 이미지는 클라이언트에 의해 제공됩니다).이미지로드에 실패한 이유를 어떻게 알 수 있습니까?

이미지를로드 할 수없는 시점을 감지 할 수 있으며이를보고하여 처리 할 수 ​​있습니다. 또한로드에 실패 할 때 자리 표시 자 이미지를 설정합니다.

<img alt="Image not found" onError="failedToLoadResource" id="something" class="class1 class2">

이 잘 작동합니다. 그러나 이미지를로드하지 못한 시점을 알면 충분하지 않습니다. 나는 그것이 일어난 이유를 확인할 수 있어야합니다. 이미지는 Google 서버에서 호스팅되기 때문에 404는 불가능하지만 불가능하지는 않습니다. 클라이언트 장치에 액세스 할 수 없으며 해당 장치에서 설명한대로 문제를 재현 할 수 없습니다.

나는 주변을 두리번 시도했지만 나는 나는 그것이 404 수 있습니다 같은데요 위해 ...

찾고 있어요 찾을 수없는, 일부 CSP의 설정 문제, 어쩌면 약간의 인터넷 연결 딸꾹질, 어떤 . 나는 그것이 무엇인지를 알고 싶기 때문에 그것을 더 잘 이해할 수 있습니다.

편집 : 코드가 코르도바 어플에 있다고 말하면서 확인할 로그가 없습니다.

+2

따라서 이미지에 실패하면 Ajax 호출을 통해 상태 코드를 얻습니다. – epascarello

+0

아마도 이미지가 제대로로드/전달되지 않는 이유에 대한 서버 로그를 확인해야할까요? 물론 클라이언트 측에서 AJAX 요청을 수행하고 반환 된 HTTP 상태 코드를 확인할 수는 있지만 실패한 이유가 아니라 오류 유형 만 알려줍니다. – Terry

+0

'src가 동적으로 설정되고 있습니다. '- 이것이 어떻게 설정되어 있느냐에 따라 올바르게 설정되지 않았기 때문에 404를 얻게 될 가능성이 가장 큽니다. –

답변

1

클라이언트 쪽에서는 ajax 호출을 한 다음 응답을 구문 분석하여 이미지에 액세스 할 수 있습니다. jQuery를 사용하면 쉽게 완료 할 수 있습니다.

var call = $.ajax("image.img") 
    .fail(function(call, textStatus) { 
    alert("Request failed: " + textStatus); 
    }); 

서버 측에서 서버 로그를 확인하고 올바른 요청을 검색하여 발생한 문제를 확인할 수 있습니다. 요청이 서버에 도달하지 않은 경우 네트워크/라우팅/방화벽 문제 일 수 있습니다.

그러나이를 수행하는 단계는 백엔드에서 사용되는 것에 크게 의존합니다.

+0

코드가 Cordova 앱에 있다는 것을 잊어 버리므로 확인 할 로그가 없습니다. 아약스 호출은 제가 확실히 구현할 영리한 아이디어입니다. 그러나 이것들이 영향을 줄 수있는 유일한 유형의 문제는 아니겠습니까? – Silviu

+0

프런트가 실제로 네이티브 트로프 브라우저로 에뮬레이트되었다고해서 백엔드가 요청을 로깅하지 않는다는 것을 의미하지는 않습니다. 서버에서 이미지를 사용하지 않는 한 소유하지 않거나 제어 할 수 없습니다. 또는 이미지를 장치에 로컬로 저장한다고 말하고 있습니까? 왜냐하면 당신이 그렇게하고있는 곳과 방법에 문제가있을 수 있기 때문입니다. – DanteTheSmith

+0

맞아, 서버 액세스/오류 로그를 잊어 버렸어. 리소스를 찾을 수 없거나 요청이 거부되었다는 것을 알 수없는 것을 볼 수 없었습니다. 상당히 똑똑한 해결책을 제시했기 때문에 이것을 대답으로 받아 들일 것입니다. – Silviu