2013-02-23 4 views
1

iframe이 있고 자바 스크립트로 contentDocument를 수정하고 있다고 가정 해 보겠습니다.Firefox에서 iframe 본문의 innerHtml을 설정할 수없는 이유는 무엇입니까?

이론적으로 당신도 직접 contentDocument.body.innerHTML을 설정하거나 잘 크롬에서 모두 작업을 contentDocument.write()

See this example on jsbin

를 사용하여이 작업을 수행 할 수 있습니다. 그러나 파이어 폭스에서는 맨 위가 깜박입니다. (IE10에서는 맨 위가 null 인 오류가 발생하지만 IE는 걱정하지 않습니다.)

두 질문 :

  • 왜 파이어 폭스에서 발생합니까?
  • 동작 사양에 따라 "올바른"하나
  • ?
+0

나는 가능한 솔루션으로 iframe이로 컨텐츠를 주입하지 갈거야. – Leeish

+0

@Leeish - 무엇에 대한 해결책? 콘텐츠를 삽입 할만한 많은 이유가 있습니다. 빌어 먹을, 심지어 모든 IT (샌드 박스, srcdoc, 원활한 속성) 나는 사과 –

+0

에 대한 HTML5 스펙의 일부있다, 나는 다른 방법으로 해결 할 수없는은 iframe에 내용을 삽입하는 이유 건너 적이 없어요. – Leeish

답변

2

Firefox에서는 iframe을 만들면 about:blank로드가 시작됩니다. 그런 다음 스크립트가 해당로드로 경쟁합니다. DOM을 수정 한 다음 : blank는 변경 사항을로드하고 지 웁니다. 그렇게 할 것입니다 웹 어플리케이션의 제안이 비록

은 "사양은"지금까지 (문서 로딩의 대부분 같은) 여기에 동작을 정의하지 않습니다. 그 제안은이 상황에서 블랭크로드가 없어야하고로드가 발생하지 않아도 가짜로드 이벤트가 발생해야한다는 것입니다 (웹 사이트는 src 발생로드 이벤트가없는 프레임에 의존하기 때문에).

+0

흥미 롭습니다. 현재 내 PC가 아니지만 iframe 문서의로드 이벤트 이후에 업데이트를 예약 할 수 있다는 것을 의미합니까? 왜 doc.open() 양식이 붙어 있습니까? –

+0

흠, [jsbin에서 레미에 따라 (https://twitter.com/rem/status/305272817686036480)는 열림/닫힘 내가 꽤로드 이벤트를 상관없이 얻을 수없는 것 불구하고 문서의 준비 이벤트가 해고 보장 무엇 : http://jsbin.com/ekoreb/5/edit –

+0

'doc.open'은 보류중인 모든로드를 취소하고, 특히'about : blank'로드를 취소합니다. –