2011-08-30 3 views
0

예를 여기, 내가 문제가 말한다 :문서를 지운 후에 document.write (ln)가 작동하지 않습니까? 제목에서와 같이

...  
<script> 
document.body.innerHTML = ""; 
document.write("<scr"+"ipt>alert(1);<\/scr"+"ipt>"); 
</script> 

문서를 제거한 후, 나는 그것을 일부 JS 코드를 작성하려면 (그리고 나는 물론 실행하려는). 다른 방법을 시도했지만 작동하지 않을 것 같습니다 (그리고 Firefox Firefox 6.0이 있습니다).

누구든지 해결책이나이 대안에 대한 대안을 알고 있습니까? 미리 감사드립니다!

+1

스크립트의 위치는 어디입니까? 'head'에 있으면'document.body'가'null'이기 때문에 작동하지 않습니다. 문서의 '본문'은 아직 파싱되지 않았습니다. –

+0

[빈 체크를 클릭하여 매트의 답변에 동의해야합니다] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). – SLaks

답변

3

document.write()을 사용하지 마십시오. 그냥 하지마.


이 시도 (Why is document.write considered a "bad practice"? 참조) : DOM을로드하기 전에에만 작동 document.write를

var text = 'alert(1);', 
    script = document.createElement('script'); 
script.appendChild(document.createTextNode(text)); 
document.head.appendChild(script); 
1

을; document.body.innerHTML은 이후에만 작동합니다.

대신 document.body.appendChild를 사용하여 새 텍스트 노드를 추가하십시오.

+0

DOM이 완전히 파싱되지 않았더라도 ('head' 내부가 아닌'body' 내부에서만)'document.body'에 액세스 할 수 있습니다. –

+0

그러나 그것은 좋은 생각입니까? – Blazemonger

+0

글쎄, 그건 다른 질문입니다;) –

관련 문제