2009-11-30 4 views
1

현재 페이지 머리글의 javascript가 실행될 때 나는 스스로에게 묻고 있습니까?JavaScript는 언제 실행됩니까?

모든 내용을로드 했습니까? 이미지를로드하는 중입니까? 사이트를로드하기 전에?

이유는 사용자가 javascript없이 사이트에 액세스하는 것을 막기위한 방벽을 구현하고 싶습니다. (내부 회사 용으로, 요구 사항을 저를 비난하지 않아야합니다.) 제 생각에는 div 오류 메시지를 작성하는 것이 었습니다. 자바 스크립트로 숨겨져 있고 내 페이지의 스크린 샷이 회색으로 표시되며 자바 스크립트가 사용 중지 된 경우에도 숨겨집니다.

문제는 그러한 스크린 샷이 파일 크기면에서 상당히 클 수 있다는 것입니다. 그래서, 느린 연결로, 자바 스크립트 숨기기 전에 전체 이미지를로드해야합니까?!

답변

2

<script> HTML 페이지의 <head>에있는 태그는로드 될 때 (즉, defer 속성 집합이없는 경우), 즉 이미지 또는 나머지 문서가로드되기 전에 실행됩니다. 무엇을하고 싶은지 묻는 메시지는 <div id="something" style="display:none">에 숨기려는 이미지가 포함되어 있으며 페이지 뒤에이 div가 표시되고 해당 내용 (스크린 샷 이미지 포함)이로드되었습니다 (예 : onload 핸들러에 있음). addEventListener도 사용하십시오).

HTH!

+0

처음 실행될 때 질문에 대답하는 첫 번째 답변에 대한 ;-) 그래서 요점을 되풀이합니다; 헤더에있는 JS에 리디렉션을 배치하면 배경 이미지가로드되기 전에 실행됩니다. 그래서 그것은 내 문제에 대한 해결책입니다, 리디렉션 하나만 작동하지 않으면 페이지가 이미지와 함께로드됩니다. –

+0

예. 리디렉션 (location.href = '...';)이 즉시 실행됩니다. – AKX

4

<noscript> 태그 안에 "반드시 자바 스크립트가 있어야합니다"라는 경고를 넣지 않는 이유는 무엇입니까?

+0

그렇다고해서 사용자가 어쨌든 사이트를 사용하는 것을 방해하지 않기 때문에 내가해야 할 일입니다. JS없이 사이트를 사용하는 것은 불가능합니다 (CSS를 편집하지 않고도). –

+0

noscript가 반드시 스크립트 요소를 따라야하는 것은 아니므로 JS를 머리에 넣고 본문에 noscript 요소를 추가 할 수 있습니다. – Boldewyn

+0

'

1

자바 스크립트는 사용중인 이벤트에 따라 다릅니다. onload 이벤트에 대해 이야기하고 있다면 모든 컨텐츠가로드 된 직후에 실행됩니다.

문제를 해결하려면 페이지를 만들어서 JavascriptEnabled.html로 리디렉션 할 수있는 자바 스크립트를 작성하십시오. 리디렉션 할 수없는 경우 META REFRESH 태그를 추가하고 JavascriptDisabled.html로 리디렉션하고 경고 메시지를 표시해야합니다.

+0

좋은 지적, 좋은 생각이야! 나는 분명히 이것을 들여다 볼 것이다. –

2

script 태그의 자바 스크립트는 브라우저가 볼 때마다 실행됩니다. 그러나 다른 모든 실행 및 (아마도) 다운로드를 중지합니다. 따라서 bodyimg을 숨기려고하지만 script 태그가 head에 있기 때문에 img이로드되기 전에 실행되어서 찾을 수 없습니다 (document.getElementById('#noScriptImage') 실패).

다른 옵션imgscript태그를 배치하는 것이지만, 그 후 순식간에 대한 화상이 표시되고 화면 쓸어 것으로 변화가있다.

+0

매우 이해하기 쉽고, 이제는 더 명확 해집니다. –