2011-12-04 2 views
0

이미지를 상자 중앙에 표시하는 함수를 작성했습니다. 그러나 이미지가로드되면 위치 정보를 포함한 기본 스타일이 제공됩니다. 중심 이미지 기능 호출은 기본적으로 이미지로드와 동시에 발생하지만 이미지가 완전히로드되기 전에 완료됩니다. 이로 인해 이미지의 기본 스타일에 의해 중심 이미지 기능의 부작용이 겹쳐서 결과적으로 이미지가 상자 중앙에 배치되지 않습니다.js 함수 실행을 지연하십시오.

이 문제를 해결하기 위해 센터 이미지 실행을 지연시킬 수 있는지 궁금합니다. 어떤 사람이 js 함수의 실행을 지연시키는 지 알려 줍니까? 고마워.

답변

0

setTimeout을 사용하여 함수의 실행을 지연시킬 수는 있지만 이미지가로드 될 때들을 수 있기 때문에 원하는 것 같지 않습니다.

if(image.complete) { 
    // already finished loading 
}else{ 
    image.onload=function() { 
     // loaded 
    }; 
} 
+0

알고 계시 겠지만 온로드를 설정할 때 경쟁 조건이있을 수 있습니까? 즉, image.onload가 할당되기 전에 이미지의로드가 완료됩니다. 이 일이 엉망이 될까? 그렇다면 onload 함수를 할당 한 후에 또 다른 image.complete 검사가 있어야합니까? –

+0

@trinithis : 나는 그것이 일어날 수 있을지 의심 스럽다. JavaScript는 단일 스레드이며이 코드는 동기식이므로이 코드가 완료 될 때까지는 아무 것도 할 수 없다고 생각합니다. 이 코드가 실행되는 동안 이미지로드가 완료되면이 코드가 실행을 마친 후 이벤트가 발생합니다. – RightSaidFred

+0

JS가 단일 스레드 인 동안 페이지 로더는 동일한 스레드를 공유하지 않을 수도 있습니다. –

0

전화 당신이 모든 이미지를 한 후 코드를 실행 냈다 다음 코드를 사용할 수있는 자바 스크립트 라이브러리 jQuery를 사용하는 경우 img

<img src="<>" onload="centerImage()" /> 
0

onload 이벤트에서 "센터 이미지"기능 로드 한 :

대신 "창"(페이지의 모든 이미지를로드 한)의
$(window).load(function(){ 
    //initialize after images are loaded 
}); 

, 당신은 또한 직접 내가 선택할 수 있습니다 마술사.