브라우저는 언제 Javascript를 실행합니까?실행 커서는 어떻게 이동합니까?
브라우저의 커서가 Javascript를 실행하는 방법을 설명하는 자료가 있는지 궁금합니다.
페이지가 로드될 때 태그가 로드되고 실행되며 다양한 윈도 이벤트에 기능을 부가할 수 있다는 것은 알지만, 예를 들어 AJAX를 통해 리모트 페이지를 검색하여 내용을 div에 넣는 경우입니다.
리모트 페이지에서 다음과 같은 스크립트 라이브러리를 로드해야 하는 경우<script src="anotherscript.js" />anotherscript.dload는 언제 로딩되고 내용은 언제 실행됩니까?
현재 페이지에 "anotherscript.js"를 포함하여 이 스크립트의 중복된 원격 콘텐츠를 로드하면 어떻게 됩니까?원래 것을 덮어쓰나요?원래 "anotherscript.js"에 값을 변경한 var가 포함되어 있는 경우 해당 파일을 새로고침합니다.원래 값을 잃었습니까, 아니면 이 스크립트의 두 번째 포함이 무시되었습니까?
절차상의 Javascript를 AJAX에서 로드하면 언제 실행됩니까?내가 한 직후에mydiv.innerHTML(remoteContent)아니면 그 전에 실행됩니까?
답은 스크립트 태그의 위치와 추가한 방법에 따라 달라집니다.
마크업과 인라인으로 연결된 스크립트 태그는 브라우저의 마크업 처리와 동시에 실행되므로(#2 참조), 이러한 태그가 외부 파일을 참조하는 경우 페이지 처리 속도가 느려지는 경향이 있습니다.(브라우저가 이 작업을 처리할 수 있도록 하기 위해서입니다.
document.write처리 중인 마크업을 변경합니다.)스크립트 태그와
defer일부 브라우저에서는 DOM이 완전히 렌더링될 때까지 속성이 실행되지 않을 수 있습니다.당연히 이것들은 사용할 수 없다.document.write(마찬가지로,async스크립트를 비동기화하는 속성입니다만, 스크립트에 대해서는 잘 모릅니다.상세).DOM 로드 후 요소에 할당하는 콘텐츠의 스크립트태그 (를 통해)
innerHTMLjQuery 또는 프로토타입과 같은 라이브러리를 사용하지 않는 한 실행되지 않습니다(단, Andy E가 지적한 예외는 IE에서 속성이 있으면 실행됩니다). 다른 브라우저에서는 동작하지 않습니다.)의 「 」를, 「 」를 붙이면,
script브라우저는 스크립트를 즉시 다운로드하기 시작하고 다운로드가 완료되는 즉시 실행됩니다.이렇게 추가된 스크립트는 동기 또는 반드시 순서대로 실행되지 않습니다.첫 번째 추가 a<script type="text/javascript" src="MyFct.js"></script>를하고 나서, 「 」<script type="text/javascript">myFunction();</script>, 그 경우는, 「」라고 하는 것입니다.MyFct.jsmyFunction()인라인 스크립트에서 사용하려고 하면 정의되지 않습니다.실행할 가 있는 는, 을, 「」를 할 수 .load★★★★★★★★★★★★★★★★★」readyStateChange의script( 「」)load는 대부분의입니다.readyStateChangeIE 버전에 따라서는, 또 브라우저에 따라서는 양쪽 모두를 실행할 수 있기 때문에, 같은 스크립트에 대해서 복수의 통지를 처리할 필요가 있습니다).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
'programing' 카테고리의 다른 글
| Oracle 9i에서 빈 문자열을 NULL로 취급하는 이유는 무엇입니까? (0) | 2023.03.06 |
|---|---|
| Oracle에서 날짜에서 월 이름을 가져옵니다. (0) | 2023.03.06 |
| Spring Cloud Eureka Server 자체 보존 및 갱신 임계값 이해 (0) | 2023.03.06 |
| RestTemplate를 사용할 때 내부 잭슨 매퍼를 설정하려면 어떻게 해야 합니까? (0) | 2023.03.06 |
| 어떻게 하면 ng-view가 아닌 ui-view에서 ng-animate를 사용할 수 있나요? (0) | 2023.03.06 |