javascript
  • appendchild
  • dynamic-script-loading
  • 2011-09-29 4 views 2 likes 
    2

    페이지에 동적으로 추가되는 자바 스크립트 파일이 있습니다. 나는에 appendChild를 사용하는 경우 this answer에 설명 된대로 스크립트가 다운로드됩니다, 그러나appendChild를 통해 자바 스크립트를 추가 할 수 없습니다.

    <html> 
    <head></head> 
    <body> 
        <script type="text/javascript"> 
          var src = 'myDynamicScript.js'; 
          document.write('<scr' + 'ipt type="text/javascript" src="' + src + '"></scr' + 'ipt>'); 
        </script> 
    </body> 
    </html> 
    

    , 그러나 결코 실행하지 : 내가 document.write를 사용하는 경우, 그것을 잘 작동

    <html> 
    <head></head> 
    <body> 
        <script type="text/javascript"> 
          var src = 'myDynamicScript.js'; 
          var script = document.createElement("script"); 
          script.type = "text/javascript"; 
          script.src = src; 
          document.body.appendChild(script); 
        </script> 
    </body> 
    </html> 
    

    내가있어 간단한 예제 설정 here (write)here (append). 나는 그것이 달릴 것으로 예상해야합니까, 아니면 알려진 행동입니까? 만약 그렇다면, 왜 그렇지 않습니까?

    답변

    3

    스크립트가 제대로 실행되고 있습니다. 단지 document.write을 사용할 수 없습니다. 테스트 할 때 경고 또는 무언가를 사용하고 document.write을 사용하지 마십시오.

    +0

    왜 "악"이 아닌) document.write를 사용할 수 없습니까? 나는이 특별한 상황에서 왜 금지되어있는 걸까요? – sprugman

    +0

    그것은 금지되어 있지 않지만 원본 문서 (즉, 기본 페이지)가 이미 닫힌 후에 발생합니다 **. 후속 "쓰기()"작업을 수행하면 원본 페이지가 버려집니다. – Pointy

    +0

    사실, @Pointy는 반대가되는 것처럼 보입니다. 제가 말할 수있는 한, appendChild-ed 스크립트의 document.write는 절대로 발생하지 않거나 메인 페이지에서 어떻게 든 덮어 씁니다. setTimeout 안에 넣으면 주 페이지를 덮어 쓸 수 있습니다. – sprugman

    1

    가능한 경우 avoid using document.write을 사용하지 마십시오. 더 좋은 방법이 있습니다 include Javascript within Javascript

    +1

    'document.write'는 일반적인 오용 (예 : 텍스트 출력)에서 나쁜 평판을 얻습니다. 적절한주의를 기울이면 동기식 스크립트 로딩을 완벽하게 수행 할 수 있습니다. –

    0

    예제가 Safari에서 작동합니다. 다음은 몇 가지 질문입니다.

    어떤 브라우저를 테스트하고 있습니까? (IE에서 문제가있는 것 같음) index.html을 브라우저로 드래그하는 것뿐만 아니라 서버에서이 작업을 시도하고 있습니까?
    myDynamicServer.js를 차단할 수있는 페이지에서 실행중인 기타 항목은 무엇입니까?
    무언가가 window.onload를 납치 했습니까?
    document.body가 아닌 document.getElementsByTagName ('BODY') [0]에 myDynamicServer.js를 추가 했습니까?

     관련 문제

    • 관련 문제 없음^_^