매우 복잡한 .aspx 페이지로 작업 할 때 (예 : Telerik, Ajax 등) 페이지가 확장, 축소, 표시, 숨기기 등으로 가득 차 있습니다. 로드되었습니다. 이 렌더링은 클라이언트 측에서 발생하며 사용자 컴퓨터 사양에 따라 다른 시간이 걸릴 수 있으므로 모든 (또는 일부) 렌더링이 수행 된 시점을 감지하는 방법이 있습니까 (jQuery?) 그래서 특정 요소가 완전히 렌더링되었다는 것을 알고 있습니까?모든 HTML 페이지 렌더링이 수행 된 것을 감지합니다.
답변
자바 스크립트는 단일 스레드입니다. setTimeout
으로 전달 된 시간은 최소이지만 최대 값이 아니므로 10 (ms)와 같이 전달하면 본질적으로 "현재 실행중인 모든 코드가 끝난 후에이 코드를 실행하십시오."라는 메시지가 표시됩니다. 모든 컨트롤은 자신의 일을 $(document).ready()
를 사용하는 경우
그래서, 당신이 필요로하는 모든입니다 $(document).ready
에 전달 된 모든 기능을 실행 한 후
$(document).ready(function() {
setTimeout(function() {
doStuff();
},10);
});
doStuff
가 호출됩니다. 그러나 이것이 절대 안전한 것은 아닙니다. 컨트롤에 문서가로드되었는지 여부를 감지하는 고유 한 방법이 있거나 자체적으로 setTimeout()
을 수행하는 경우 문제가 발생합니다. 문제는 JavaScript가 setTimeout
의 실행 순서를 보장하지 않는다는 것입니다. 때로는 코드가 마지막으로 실행될 수 있으며, 다른 경우에는 setTimeout
이 애니메이션에 사용되기 전에 실행될 수도 있습니다.
하나의 마지막 아이디어 : 모든 애니메이션이 jQuery를 사용하여 완료되면 효과는 단일 대기열에서 실행됩니다. doStuff
에서 어떤 종류의 애니메이션 인 with a callback을 추가 할 수 있으며 콜백이 마지막으로 실행될 가능성이 충분히 있습니다.
나는 당신이 필요로하는 문서가 생각 :
"나는 그 때 완전히 렌더링 알고, 특정 요소에 따라 행동 할 수 있습니까?"
위에서 링크 된로드 메소드를 사용하여 모든 요소에 연결할 수 있습니다. 당신이 "lastElement로"의 ID로 사업부가 있다면 그래서, 당신은
$('div#lastElement).load(runThisFunction);
당신은 jQuery를 $ (문서) .ready() 함수 내에서 코드를 배치해야합니다 작성할 수 있습니다. 이렇게하면 코드가 실행되기 전에 모든 요소가로드됩니다.
http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
.ready는 DOM이 준비 될 때마다 실행되고, 렌더링이 끝난 후에는 실행되지 않습니다! 페이지 렌더링이 끝날 때까지 기다리려면 .load가 필요합니다. – Mike
진행하기 전에 여러 가지 준비가 될 때까지 기다려야 할 때마다 참/거짓 값이있는 배열을 만들 것입니다. 페이지의 모든 필수 부분은 이벤트가 발생하면 호출 될 때 배열의 특정 항목을 true로 업데이트합니다. 또한 배열의 모든 값이 true이면 true를 반환하고 그렇지 않으면 false를 반환하는 일반 함수를 호출했습니다.
이 함수가 마지막으로 true를 반환하면 실행을 계속합니다. AJAX 호출이 끝날 때까지 기다려야하지만 async = true를 사용하지 않으려는 경우 특히 유용합니다. 또한 여러 항목을 차례로로드하는 대신 한 번에로드하는 것을 시작하려는 경우 모두 유용합니다.로드가 모두 동일한 배열에 준비 상태를보고하기 때문입니다.
그러나 전역 변수를 사용하기 때문에 일부 최적화가 필요할 수 있습니다. 전역 변수에 대한 원한이있는 경우에도이 접근법을 사용하고 싶지 않을 수 있습니다.
- 1. 가속도계가 좌우로 움직이는 것을 감지합니다.
- 2. 비 응용 프로그램 활동이 호출 된 것을 감지합니다.
- 3. SURF + LSH - OpenCV - 동일한 페이지 스캔을 감지합니다.
- 4. 스타일을 지정하기 위해 (대부분의) 모든 요소가 포함 된 HTML 페이지
- 5. PDF에서 모든 것을 추출하십시오.
- 6. 스크립트가 호출 된 페이지가 아닌 페이지 위치를 감지합니다.
- 7. jQuery를 통해 선택 또는 텍스트 상자가 채워지는 것을 감지합니다.
- 8. heritrix 크롤링에서 text/html 이외의 모든 것을 제외하려면 어떻게해야합니까?
- 9. 은 모든 텍스트가 블록에 맞는지 감지합니다.
- 10. HTML 페이지 크기 - 페이지 무게
- 11. HTML 양식의 HTML 페이지 오버레이
- 12. ASP.NET MVC html 페이지 인증
- 13. Chrome에서 javascript가 실행 된 후 HTML 소스가 변경된 것을 보았습니다.
- 14. 방법, 난 그냥 명령에 추가 할 것을 알아야 암호와 모든 것을 가지고 수행 AUTH
- 15. HTML 페이지 (모든 언어)에서 멀티미디어 파일 구문 분석
- 16. iPhone : 다른보기의 렌더링이 가능합니까?
- 17. GET 요청이 포함 된 HTML 페이지
- 18. jQuery 페이지 매김이 포함 된 HTML 테이블
- 19. Redis의 모든 것을 어떻게 삭제합니까?
- 20. HTML 실제 페이지 링크
- 21. HTML 페이지
- 22. html 페이지 어노 테이터
- 23. 업로드 된 파일이 손상된 경우를 감지합니다.
- 24. SQL 배열의 모든 것을 선택하십시오.
- 25. 모든 것을 index.php로 리다이렉트
- 26. 모든 것을 제거하십시오
- 27. PHP로 모든 것을 검색하도록하십시오.
- 28. 모든 쿼리가 성공적으로 수행 된 경우에만 데이터베이스를 변경하십시오.
- 29. 단일 HTML 페이지 - html 차트 -
- 30. redirect_to이고 렌더링이 교환 가능합니까?
이러한 온로드 작업을 추가하는 사람은 행동의 마지막에 트리거를 추가하지 않는 이유는 무엇입니까?또는로드 중에 변경되는 항목의 "폴링"을 추가 할 수 있습니까? – Dror
'document.ready()'순간 이후에 뭔가가 필요합니까? – naivists
"렌더링 됨"이 약간 모호 할 수 있습니다. 모든 페이지 요소가 언제 완성되었는지 * 더 나은 용어가 부족하다는 것을 알고 싶습니까? 즉, 확장해야하는 항목이 확장 될 때, 숨겨지기로되어있는 항목이 숨겨 지는지 등을 알고 싶습니까? –