카테고리 없음

[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.htmltest.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