2010-02-03 5 views
1

David Flanagan의 "JavaScript - The Definitive Guide"(나는이 질문을 O'Reilly Answers에 대해서도 물어 봤다) 또는 그 밖의 다른 문제에 대해서는 언급하지 않았다. 그러나 그 창을 찾고있다. 문서가 완전히로드되지 않으면 .onunload가 호출되지 않습니다. 이는 매우 성가신 일입니다! IE8 및 Chrome 3 이상인 경우JavaScript onunload는 문서가 완전히로드 된 경우에만 호출됩니까?

웹 페이지 하단에 추가하려는 자바 스크립트가 있습니다. 페이지가로드되기 전에 사용자가 페이지를 클릭하면 (^ 아래 참조) 자바 스크립트가 실행되기 전에 나는 onunload에서이를 잡아두기를 바랬습니다. 그러나 onunload 이벤트 핸들러는 문서가 완전히로드 될 때만 호출되므로 불가능합니다. onunload를 사용할 수 없으면 같은 것을 얻기 위해 사용할 수있는 것이 있습니까?

^"Javascript - The Definitive Guide"는 페이지가로드 될 때까지 페이지와의 사용자 상호 작용이 발생할 수 없음을 나타냅니다. 나는 이것이 틀렸다는 것을 믿는다. 이 책의 내용은 다음과 같습니다 :

"자바 스크립트 실행 모델의 또 다른 회색 영역은 문서가 완전히로드되기 전에 이벤트 처리기를 호출 할 수 있는지 여부입니다 .Javascript 실행 모델에 대한 논의는 지금까지 모든 이벤트 처리기는 모든 스크립트가 실행 된 후에 항상 트리거됩니다. 일반적으로 모든 표준에서 필요하지는 않지만 문서가 너무 길거나 느린 네트워크 연결을 통해로드되는 경우 브라우저에서 문서를 부분적으로 렌더링하고 모든 스크립트 및 onload 핸들러가 실행되기 전에 사용자가 이벤트 핸들러를 시작하고 상호 작용을 시작할 수있게합니다. 이벤트 핸들러가 아직 정의되지 않은 함수를 호출하면 실패합니다 (이것은 모든 함수를 정의하는 한 가지 이유입니다 문서의 스크립트에서). 그런 이벤트 핸들러가 아직 파싱되지 않은 문서의 일부를 조작하면 실패합니다. 이 시나리오는 실제로는 드문 일이며, 일반적으로 적극적으로 방지하기 위해 필요한 추가 코딩 노력이 가치가 없습니다. " (5 판, 256 페이지)

나는 상호 작용할 수 있었다 보여 주었다 IE8에서 테스트를 수행 (그리고 앵커 링크를 통해 그것을두고) 페이지의 로딩의 모든 단계에서. 어떤 도움

감사합니다, 폴 페이지에

+0

자바 스크립트가 모두 초기 실행을 완료하기 전에 사용자가 클릭해야 할 시간이 있다면이 방법으로 실행해야하는 자바 스크립트의 양을 줄일 수 있습니까?나중에 다른 js 파일을 가져 오기 위해 eval을 사용할 수 있습니다. –

+0

"문서가 구문 분석 됨"또는 "onload"이벤트가 발생했습니다 "로 완전히로드 됨"을 정의하고 있습니까? –

+0

* 브라우저가 부분적으로 문서를 렌더링하고 사용자가 상호 작용을 시작할 수 있도록 허용 * 브라우저가 부분 렌더링 페이지와 상호 작용할 수 있음을 읽음. –

답변

0

그것이으로 onUnload 이벤트가 될 때까지 실행되지 수 있다는 것을 나에게 의미가 있습니다 문서 구문 분석 및 스크립트 실행은 일반적으로 동일한 스레드에서 실행되며 사용자가 e page를 입력하면 onunload 이벤트가 발생한 후 스레드가 취소됩니다. 다음 페이지로 탐색을 지연시킬 것 -

  • 는 구문 분석을 완료하고 언로드 이벤트가 발생 : 구문 분석은 사용자가 페이지에서 멀리 탐색시 스레드를 사용하고 있기 때문에, 브라우저는 다음과 같은 옵션이 있습니다 것 그래서 이것은 실제로 실현 가능한 옵션이 아닙니다.
  • 구문 분석을 취소하고 언로드 이벤트를 실행하십시오. 이것은 더 실현 가능한 옵션이지만 일부 UA가 귀찮아 보이지 않을 수도 있습니다.
  • 그냥 스레드를 중지하고 다음 페이지로 이동 - onbeforeunload 이벤트가 발생하면 어쩌면 당신이 볼 수있는 IE와

크롬에 당신을 위해 무슨 일이 일어나고 있는지 것 같다? 나는 그것이 차이를 만들 것이라고 생각하지 않습니다. 가장 좋은 방법은 페이지를 더 빨리로드 할 수있는 방법을 찾는 것입니다.

관련 문제