우리는 JavaScript가 해석된 언어이고 그 실행이 하향식이라는 것을 알고 있습니다. 그러나 각 브라우저는 하향식에 대한 이해가 조금씩 다르며 코드의 업스트림과 다운스트림, 즉 프로그램 흐름이 중요합니다. 프로그램의 정확성이 중요하므로 여러 js 블록의 실행 순서에 대한 깊은 이해가 필요하다고 생각합니다.
우선 페이지에 자바스크립트를 추가하려면 메소드가 몇 개나 있는지 알아야 겠죠? 아래의 처음 두 가지 유형이 일반적이지만 실제로는 더 많은 유형이 있습니다.
1. 외부 js 파일을 페이지에 직접 삽입:
2. js 조각을 페이지에 직접 작성
"); " "ipt>참고: 이때 "..
"는 "
alert(1)
")
이것이 이미 스크립트에 있으므로 필요하지 않다고 생각할 수도 있습니다. 다른 레이어? 하하, 그것은 글쓰기 방식이고, 그 자신만의 특별한 동작을 갖고 있는데, 이에 대해서는 나중에 논의하겠습니다.
5. Ajax에서 eval()과 결합하여 js를 도입합니다. Dojo 코드에서 처음 보고 자세히 작성했습니다.
var ajaxRequest = getXmlHttpRequest()//각 브라우저에 대한 필요성을 저장합니다. get xmlHttpRequest Department
ajaxRequest.open("GET","my.js",false);//xmlHttpRequest 객체의 Get 메서드를 사용한 동기 호출
ajaxRequest.send(null)
sJsFragment = ajax.responseText ;//문자열을 js 조각으로 가져오기
eval(sJsFragment);//js 조각 실행
참고: my.js 및 이후 sJsFragment의 콘텐츠는 매우 표준화된 js여야 합니다. , //Comment로 시작하면 안되는데, js가 표준화되었는지 어떻게 확인하나요? http://jslint.com/으로 이동하세요.
6. 전능한 Dom 메소드입니다. 저는 이것을 Yahoo의 프런트엔드 코드에서 처음 보았습니다. 매우 강력하고 자세하게 작성되어 있습니다.
var oScript = document. "script");//스크립트 요소 생성
oScript.src = "my.js";//src 속성 지정
document.getElementsByTagName("head")[0].appendChild(oScript) ;
참고: my.js의 콘텐츠는 oScript가 문서에 추가된 후에 얻어지고 실행됩니다. 이 단락을 주의 깊게 살펴보면 이 호출이 비동기식이며 문서가 로드된 후 이벤트에 의해 트리거될 수 있다는 것을 쉽게 알 수 있습니다. 도메인 간에 데이터를 가져올 때 xmlHttpRequest의 Get 메서드를 대체하기 위해 이를 수정하는 데 사용했습니다. , 완벽한 결과를 얻었으므로 앞으로 특별한 기사를 쓸 기회를 갖게 될 것입니다.
6가지 유형이 꽤 많으며, 더 많을 수도 있습니다. 또한 이러한 유형은 서로 중첩되어 지속적으로 변경될 수 있습니다. 방법 1, 2, 4, 6에 소개된 자바스크립트의 실행 순서는 매우 자연스럽습니다. 페이지가 로드되고 후속 이벤트가 발생하므로 선착순을 따르며 내부적으로는 상위입니다. 아래에. <script>alert(1)</script>우리의 주요 관심사는 js를 도입하는 세 번째와 네 번째 방법으로 인해 발생하는 문제입니다. (재포스팅 시 출처를 밝혀주세요: http://blog.csdn.net/lenel)