카테고리 없음
[jquery] jQuery, 외부 파일로드 후 작업 수행
행복을전해요
2021. 1. 10. 18:48
$ 함수를 호출하는 동안 스크립트가 충돌하지 않는다는 것은 이미 운이 좋았습니다 $(document)
:)
여기에 예가 있습니다.
test.js :
function sleep(milliseconds)
{
var end = new Date().getTime() + milliseconds;
while (new Date().getTime() < end);
document.write('external script executed<br/>');
}
sleep(3000);
test.html
<html>
<head>
<title>test</title>
<script type="text/javascript">
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", "test.js");
document.getElementsByTagName("head")[0].appendChild(fileref)
document.write('page script executed<br/>');
</script>
</head>
<body>
</body>
</html>
test.html
test.js
문서에 쓰기 전에 로드됩니다 . 결과가 다음과 같을 것으로 예상하는 경우 :
실행 된 외부 스크립트
페이지 스크립트 실행
... 그럼 당신은 틀렸어요.
페이지 <script>
의 <head>
에 요소를 추가 하면 appendChild()
함수는 요소가 추가 된 후 즉시 반환 되며 스크립트가 완전히로드 될 때까지 기다리지 않습니다 . 위의 예에서 출력은 다음과 같습니다.
페이지 스크립트 실행
실행 된 외부 스크립트
이것이 내가 jQuery가 완전히로드되었는지 확인하지 않으려는 시간에 jQuery를 사용할 수있어 운이 좋다고 말한 이유입니다.
이 문제에 대한 해결 방법 은 문서에 $(document).ready(...);
스크립트로 추가 하는 것 <head>
입니다. 일반 브라우저 (내 말이 무슨 뜻인지 알면)가 페이지에 추가 한 순서대로 스크립트를로드하고 실행할 것으로 예상 할 수 있습니다.
var pageScript = document.createElement('script');
pageScript.setAttribute("type", "text/javascript");
var pageScriptSource = document.createTextNode("document.write('page script executed<br/>');");
pageScript.appendChild(pageScriptSource);
document.getElementsByTagName("head")[0].appendChild(pageScript);
FF 및 IE로 테스트되었습니다. FF에서 작동 ...
완전한 솔루션은 아니지만 IE에 대한 해킹을 찾을 시간이 없습니다 (그리고 원하지도 않습니다).
-------------------jQuery.getScript를 사용해보십시오 : http://docs.jquery.com/Ajax/jQuery.getScript
스크립트가로드 될 때 실행할 콜백을 지정할 수 있습니다.
출처
https://stackoverflow.com/questions/2006051