2012-10-06 5 views
1

페이지에 yepnope.js를 삽입하고 yepnope로 다른 JS 파일을로드하려고합니다.콜백으로 페이지 스크립트 삽입하기

크롬 개발 도구의 네트워크 탭에 yepnope가 페치되고 요소 탭 show 요소가 삽입 된 것으로 표시됩니다. 그러나 콘솔 탭을 보여줍니다 : 사전에

var betaApp = { 


    injectYepnope: function(url) { 
     var gp = document.createElement('script'); 
     gp.type = 'text/javascript'; 
     gp.async = true; 
     gp.src = url; 

     gp.onload = betaApp.yepnopeLoaded; 
     // Only for IE 6 and 7 
     gp.onreadystatechange = function() 
     { 
      if(this.readyState == 'complete') 
      { 
       betaApp.yepnopeLoaded(); 
      } 
     } 

     document.body.appendChild(gp); 
    }, 

    yepnopeLoaded: function() { 
     yepnope([ 
      { 
       load: ['//cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js', 'http://raw.github.com/andris9/jStorage/master/jstorage.js'], 
       complete: function() { 
        betaApp.firstPartLoaded(); 
       } 
      }, 
      { 
       load: [ 
        'http://code.jquery.com/jquery-1.8.2.min.js', 
        'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js', 
        'https://raw.github.com/Automattic/Iris/master/dist/iris.js', 
        'https://raw.github.com/cnkt/eksi-beta/master/ui/js/twitter-bootstrap/js/bootstrap-modal.js', 
        'https://raw.github.com/Automattic/Iris/master/src/iris.min.css' 
       ], 
       complete: function() { 
        betaApp.allJsLoaded(); 
       } 
      } 
     ]); 
    } 
}; 

betaApp.injectYepnope('https://raw.github.com/cnkt/eksi-beta/master/ui/js/yepnope.js'); 

감사 :

Uncaught ReferenceError: yepnope is not defined 

여기 내 코드입니다.

답변

0

코드 자체는 문제가 없지만 DOM 준비가 된 후에 호출해야합니다. 그렇지 않으면 스크립트를 문서에 추가 할 수 없으므로 코드를 호출해야합니다. 이 코드 외장 파일에 있어야합니다 경우에만 옵션하거나 문서의 끝 부분에 당신의 HTML에 직접 스크립트를 추가 -

는 라이브러리 onReady 이벤트 (예 : JQuery.ready())를 사용 하나.

+0

새로 생성 된 JS 파일 (의미 : 비어 있음)에 코드를 복사하여 붙여 넣었습니다 : "잡히지 않은 ReferenceError : yepnope가 정의되지 않았습니다" – cnkt

+0

스크립트가로드 될 때 DOM이 준비되지 않았다는 문제가 있습니다 JS는 기억을 차단하고 있습니다.) 스크립트가 스크립트를 추가 할 수 있도록 문서가 존재하지 않습니다. - HTML 문서 (외부 파일이 아닌)에 스크립트를 직접 추가하면 DOM이 준비 될 때까지 초기화 할 때까지 기다려야합니다. –

+0

그러나 dev 도구의 요소 탭은 "script"태그가 "body"요소에 추가되었음을 보여줍니다. – cnkt

관련 문제