programing

브라우저는 언제 Javascript를 실행합니까?실행 커서는 어떻게 이동합니까?

goodjava 2023. 3. 6. 21:08

브라우저는 언제 Javascript를 실행합니까?실행 커서는 어떻게 이동합니까?

브라우저의 커서가 Javascript를 실행하는 방법을 설명하는 자료가 있는지 궁금합니다.

페이지가 로드될 때 태그가 로드되고 실행되며 다양한 윈도 이벤트에 기능을 부가할 수 있다는 것은 알지만, 예를 들어 AJAX를 통해 리모트 페이지를 검색하여 내용을 div에 넣는 경우입니다.

리모트 페이지에서 다음과 같은 스크립트 라이브러리를 로드해야 하는 경우<script src="anotherscript.js" />anotherscript.dload는 언제 로딩되고 내용은 언제 실행됩니까?

현재 페이지에 "anotherscript.js"를 포함하여 이 스크립트의 중복된 원격 콘텐츠를 로드하면 어떻게 됩니까?원래 것을 덮어쓰나요?원래 "anotherscript.js"에 값을 변경한 var가 포함되어 있는 경우 해당 파일을 새로고침합니다.원래 값을 잃었습니까, 아니면 이 스크립트의 두 번째 포함이 무시되었습니까?

절차상의 Javascript를 AJAX에서 로드하면 언제 실행됩니까?내가 한 직후에mydiv.innerHTML(remoteContent)아니면 그 전에 실행됩니까?

답은 스크립트 태그의 위치와 추가한 방법에 따라 달라집니다.

  1. 마크업과 인라인으로 연결된 스크립트 태그는 브라우저의 마크업 처리와 동시에 실행되므로(#2 참조), 이러한 태그가 외부 파일을 참조하는 경우 페이지 처리 속도가 느려지는 경향이 있습니다.(브라우저가 이 작업을 처리할 수 있도록 하기 위해서입니다.document.write처리 중인 마크업을 변경합니다.)

  2. 스크립트 태그와defer일부 브라우저에서는 DOM이 완전히 렌더링될 때까지 속성이 실행되지 않을 수 있습니다.당연히 이것들은 사용할 수 없다.document.write(마찬가지로,async스크립트를 비동기화하는 속성입니다만, 스크립트에 대해서는 잘 모릅니다.상세).

  3. DOM 로드 후 요소에 할당하는 콘텐츠의 스크립트태그 (를 통해)innerHTMLjQuery 또는 프로토타입과 같은 라이브러리를 사용하지 않는 한 실행되지 않습니다(단, Andy E가 지적한 예외는 IE에서 속성이 있으면 실행됩니다). 다른 브라우저에서는 동작하지 않습니다.)

  4. 의 「 」를, 「 」를 붙이면,script브라우저는 스크립트를 즉시 다운로드하기 시작하고 다운로드가 완료되는 즉시 실행됩니다.이렇게 추가된 스크립트는 동기 또는 반드시 순서대로 실행되지 않습니다.첫 번째 추가 a<script type="text/javascript" src="MyFct.js"></script>를하고 나서, 「 」<script type="text/javascript">myFunction();</script>, 그 경우는, 「」라고 하는 것입니다.MyFct.jsmyFunction()인라인 스크립트에서 사용하려고 하면 정의되지 않습니다.실행할 가 있는 는, 을, 「」를 할 수 .load ★★★★★★★★★★★★★★★★★」readyStateChangescript( 「」)load는 대부분의입니다.readyStateChangeIE 버전에 따라서는, 또 브라우저에 따라서는 양쪽 모두를 실행할 수 있기 때문에, 같은 스크립트에 대해서 복수의 통지를 처리할 필요가 있습니다).

  5. AttributeAttribute)에 내부의 (Attribute)<a href='#' onclick='myNiftyJavaScript();'>스크립트 태그가 아닌 )는 관련 이벤트가 발생했을 때 실행됩니다.


내가 진짜 일을 열심히 하고 있는데 갑자기 내 뒷뇌가 말했다. "알다시피, 당신은 그들을 당신이 그들에게 할당하면 그들은 처형되지 않을 것이라고 들었다.innerHTML그냥'?안 : FWIW : FWIW 、 FWIW 、 FWIW。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Script Test Page</title>
<style type='text/css'>
body {
    font-family: sans-serif;
}
</style>
<script type='text/javascript'>
function addScript()
{
    var str, div;

    div = document.getElementById('target');
    str = "Content added<" + "script type='text/javascript'>alert('hi there')<" + "/" + "script>";
    alert("About to add:" + str);
    div.innerHTML = str;
    alert("Done adding script");
}
</script>
</head>
<body><div>
<input type='button' value='Go' onclick='addScript();'>
<div id='target'></div>
</div></body>
</html>

스크립트의 경보는 IE7, FF3.6 또는 Chrome4에 표시되지 않습니다(다른 것을 체크하는 것은 귀찮은 일이 아닙니다:-).한편, 여기에 나타낸 것과 같이 요소를 추가하면 스크립트가 실행됩니다.

스크립트 태그를 포함한 HTML 블록을 "inner"로 DOM에 삽입하기만 하면HTML", 스크립트 태그는 전혀 실행되지 않습니다.jQuery와 같은 것을 로딩하면 해당 라이브러리의 코드가 스크립트 검색 및 실행을 명시적으로 처리합니다.

으로는 그 할 수 .<script>본문)을.eval()스크립트가 글로벌(창) 변수를 선언하면 오래된 값은 덮어씁니다.

스크립트 태그는 표시되는 순서대로 처리됩니다.물론 스크립트 블록 내의 코드는 초기 실행 시 실제 처리를 나중에 연기하도록 설정할 수 있습니다.많은 jQuery 셋업/초기화 코드가 이를 실현합니다.

언급URL : https://stackoverflow.com/questions/2342974/when-does-the-browser-execute-javascript-how-does-the-execution-cursor-move