브라우저에 렌더링 이미지를 어떻게 탐지합니다 완료될 때 (즉 페인트된)?

웹 애플리케이션 (앱) 의 고해상도 이미지를 동적으로 추가할 수 있으며, 많은 데릭쉐퍼드와 작동합니까 dom 진단트리 이들은 사전 추가되도록 관심용 페이지.

39 의 it& 로드 완료, 이 때 한 가지 분명한 것은 이러한 이미지를 발견할 수 있는 '이벤트' 를 사용하고 있지만, 때 마침 렌더링되고 탐지합니다 로드하십시오 어떻게 이 템플릿에는 브라우저에서 Javascript 를 사용하여?

실제 작업할 때, 많은 시간과 높은 분해능 이미지를 페인트하는 프로세스는 시행하십시오 it& # 39 의 경우 매우 중요한 건 사실이다.

질문에 대한 의견 (9)

내가 할 때 리퀘스타니마시옹프라임 의심하게 된다. 그 후 다음 애니메이션 중 이미지 로드되었는지 렌더링됩니다 모함하는거. 애니메이션 2 네가 만일 네 이미지 프레임을 진정하라구요 렌더링됩니다.

function rendered() {
    //Render complete
    alert("image rendered");
}

function startRender() {
    //Rendering start
    requestAnimationFrame(rendered);
}

function loaded()  {
    requestAnimationFrame(startRender);
}

Http://jsfiddle.net/4fg3K/1/ 참조

해설 (2)

1 에서 [매든]

&gt. 이 모사프터파린트 이벤트가 트리거될 걸쳐 있는 콘텐츠가 &gt. 그동안 걸쳐 화면과 의심하였더라 정보를 제공합니다. 이는 &gt. 주로 쓰이는 성능 최적화 조사할 계획이다.

희망을 위해 이런 짓을 틀렸다니까 가우징 성능 렌더링된 이미지의.

해설 (0)

난 이미 동일한 문제가 발생합니다. 내가 가지고 있는 페이지를 창조하 프레로이더 진행율 표시줄에는. 이 때, 흰색 배경에 대한 이미지가 로드되었는지 부드럽게 숨길지 프레로이더 페이지 '불투명도의: 0 '이미지가 있지만 아직 렌더링되었습니다.

난 이제야 setInterval 때 사용한 ',' 이미지가 로드되었는지 (단, 렌더링됨) . 내가 '확인' 속성 '와' 의 간격을 나토랄위드스 나토랄하이트 (지원: IE9+) . It 는 '0' 언제 니시알리 렌더링됩니다 라우트의 현재 폭과 높이를 이미지를 보여준다.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

const image = document.getElementById('image');

image.src = "https://cdn.photographylife.com/wp-content/uploads/2014/06/Nikon-D810-Image-Sample-1.jpg";

image.onload = function () {
  console.log('Loaded: ', Date.now());
  const interval = setInterval(() => {
    if (image.naturalWidth > 0 && image.naturalHeight > 0) {
      clearInterval(interval);
      rendered();
    }
  }, 20);
}

function rendered() {
  console.log('Rendered: ', Date.now());
}
img{
  width: 400px;
}

끝 - &lt 스니핏 >;!

해설 (0)
  • 업데이트: # 39 이 외곽진입 - doesn& 사용하지 않는 경우에 이미지가 설정되어, t 작동합니까 치수에는 이외의 다른 기본값입니다 *

Img&gt &lt 설정할 수 있습니다;; # 39 의 높이를 element& 자동 (수신기마다 고정식입니다 폭) 와 함께 시간초과를 element& # 39 의 경기를 계속 확인, s 치수에는 자연 치수에는 이미지를 삭제합니다. # 39 의 it& 최선의 해결책이 아닌 신앙이니라 정말 해야 할 일은 아닌 뒤 한 후, # 39 의 렌더링합니다 로드중 it& 좋은 옵션입니다.

39 의 that& 늘리거나 줄일 수 있다는 점에서 어떻게 보면:

//this is NOT a real code
function checkIfRendered(img, onRender) {
    var elRatio = img.width() / img.height();
    var natRatio = img.naturalWidth / img.naturalHeight;

    if (elRatio === natRatio)
        onRender();
    else {
        setTimeout(function() {
            checkIfRendered(imgEl, onRender)
        }, 20);
    }
}

img.onload(checkIfRendered(img, function() { alert('rendered!'); }));
해설 (2)

'이벤트', ',' onload 에 필요한 &lt img&gt 태그이고, 예를 들면 다음과 같습니다.

function loadImage () {
  alert("Image is loaded");
}

출처

이미지는 이미지) 의 경우 다른 요소가 읽어들입니다 배경 (Ajax 요청을 받을 수 있는 간편한) 와 그 후, 배경을 설정할 때 뒤로를 않했노라 로드했습니다.

해설 (1)