2016-10-25 5 views
0

날씨를 결정하고 싶습니다. 서버에서 이미지를 가져올 수 있습니다. 파일 서버의 URL이 생성됩니다. 나는 이미지의 자연적인 높이를 확인하기로 결정했다. 이 코드는 페이지를 새로 고침 할 때 작동하지만 이미지를 처음 가져 오려고하면 작동하지 않습니다. 타이밍에 문제가 있습니까? 아니면이 코드 스 니펫이 완전히 잘못 되었습니까?이미지가로드 될 수 있는지 확인하십시오.

<p id="buildingPh"></p> 

<script> 

    $("#buildingPh").html("<img id='gebaeudeBild' width='100%' src='[image/url]'></img>"); 

    $(document).ready(function() { 
     if (document.getElementById("gebaeudeBild").naturalHeight == 0) { 
      $("#buildingPh").html("No image found."); 
     } 
    }); 

</script> 

전체 스크립트입니다. 나는 AEM 그래서 THRE 더 이상 코드입니다 사용하고

당신이 jQuery를 준비 문서에 대한 jQuery의 래퍼의 기능을 포장하려고 사용하고 있기 때문에
+0

그래서 이미지를 얻기 위해 다른 코드를 사용하고 이미지 오류 이벤트 ..를 처리하는 것이 더 적절한 경우? 모든 애셋이로드되면'document.ready()'에서 이것을 실행합니까? 자세한 내용을 추가해야합니다. –

+1

자세한 내용/코드를 제공해주십시오. 이미지는 어떻게 받고 있니? 비동기 방식입니까? –

+0

'.length'를 사용하여 어떤 것이 있는지 확인할 수 있습니다. 예. 'if ($ ('image'). length) { // ID가 존재하면, 무엇인가 할 것 } –

답변

0

:하지 많은 세부 사항이 제공된다으로

$(function() { 

    if (document.getElementById("gebaeudeBild").naturalHeight == 0) { 
     $("#buildingPh").html("No image found."); 
    } 
}); 

이 그냥 직감입니다 질문에. 처음으로 이미지를 가져올 때 작동하지 않는 경우 여기에 비동기 문제가있는 것으로 보입니다.

+0

이것은 IIFE가 아닌가요? jQuery는 페이지가로드 될 때'document.ready()'를 사용하여 실행합니다. –

+0

@PaulRedmond : jQuery에는 준비된 처리기를 추가하는 여러 가지 방법이 있습니다. https://api.jquery.com/ready/ – CBroe

+0

이것은 실제로는 약식입니다 https://learn.jquery.com/using-jquery-core/document -ready/ –

2

@ lee2808에 동의하지만 난 생각 이미지 load

$("#buildingPh").html("<img onerror='error()' id='gebaeudeBild' width='100%' src='[image/url]'></img>"); 

    function error() { 
     $("#buildingPh").html("No image found.");  
     }; 
+0

+ onerror 이벤트 처리기 하나 –

관련 문제