2010-01-06 3 views
0

제 문제는 다른 외부 JavaScript 파일의 javascript 파일을 동적으로 포함해야한다는 것입니다. 나는이 기능을 사용하여 할 노력하고있어 : 헤드 요소는 '작동 중단'오류가 발생에 추가하려고 곳IE6에서 외부 javascript 파일의 javascript 파일을 포함 할 수 없음

function addCustomScriptTag(url) { 
    var scriptTag=document.createElement('script'); 
    scriptTag.type = 'text/javascript'; 
    scriptTag.src=url; 
    var myElement = document.getElementsByTagName("head")[0]; 
    myElement.appendChild(scriptTag); 
} 

문제는 IE6에서만 발생합니다.

도움이 되시길 바랍니다.

+1

어둠 속에서 총 대신 몸에 부착 사용해 볼 수 있습니까? –

+0

type 속성을 설정하지 않으면 어떻게됩니까? 시체에 붙이면 어떡하지? 아니 IE6 테스트, 미안 해요. –

+0

IE6을 사용하여 WinXP SP3에서이 코드를 확인했습니다. 작동합니다. – ZippyV

답변

0

본문에 추가하십시오. 자바 스크립트는 문서의 < 머리 >에서만 독점적으로 갈 필요는 없습니다.

+0

본문에 추가하면 오류가 여전히 IE6에서 발생하고 IE7에 문제가 발생합니다. – Ben

+0

다른 문제가 발생했습니다. 경고 ('hi')가있는 스크립트를 포함하여 스크립트를 테스트했습니다. IE6에서 잘 작동합니다. – Erik

+1

Erik : 설명한대로 문제를 재현 할 수 있습니다 –

0

jQuery와 같은 라이브러리를 사용하고 나서 getScript의 동급 (jQuery를 사용하지 않을 경우)을 사용하는 것을 고려하십시오. 이것은 대부분의 브라우저 간 결함 및 불일치를 처리합니다.

+1

우리는 공급 업체 솔루션을 사용하고 있으며 소스를 편집 할 수 없습니다. 동적으로로드하려고하는 것은 JQuery입니다. – Ben

-2

IE6은 getElementsByTagName()을 지원하지 않으므로 document.body으로 바꾸어보세요.

2

머리 DOM 요소에 추가 할 때 달라집니다. DOM 요소의로드가 완료되기 전에 JavaScript를 통해 DOM 요소를 수정하려고하므로 모든 버전의 IE에서 작업이 중단됩니다 (http://support.microsoft.com/default.aspx/kb/927917).

이 스크립트가 즉시로드되어야하는 경우 오래된 학교 document.write를 사용하여 스크립트 태그를 추가 할 수 있습니다 (예 :

<head> 
     <script>document.write('<script src='yourUrl.js'><\/scr'+'ipt>');</script> 
</head> 

그렇지 않으면 일반 올드 자바 스크립트 또는 jQuery a la document.ready와 같은 프레임 워크를 통해 본문 onload에서 함수를 호출하십시오.

0

는 내가 jQuery를 소스에서 훔쳐 :

var head = document.getElementsByTagName("head")[0]; 
var script = document.createElement("script"); 
script.src = s.url; 
// Attach handlers for all browsers 
script.onload = script.onreadystatechange = function(){ 
    if (!done && (!this.readyState || 
      this.readyState == "loaded" || this.readyState == "complete")) { 
     done = true; 
     success(); 
     complete(); 
     // Handle memory leak in IE 
     script.onload = script.onreadystatechange = null; 
     head.removeChild(script); 
    } 
}; 

head.appendChild(script); 
관련 문제