2012-07-03 5 views
0

iframe에 액세스하려고하면이 오류가 발생하고 잘못된 작업을 수행 할 수 있는지 잘 모르겠습니다. 누군가이 문제로 나를 도울 수 있습니까?Iframe에 액세스

catch되지 않은 형식 오류 : 정의되지 않은

catch되지 않은 형식 오류의 특성을 읽을 수 없습니다 '문서를'정의되지 않은

의 특성 'readyState의'를 읽을 수 없습니다

var ifrm = document.getElementById('iframe'), 
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : 
           (ifrm.contentDocument.document) 
          ? ifrm.contentDocument.document : 
           ifrm.contentDocument; 

ifrm.open(); 
ifrm.write("Hello World!"); 
ifrm.close(); 

이 내가받을 오류가 있습니다

+3

*** 읽을 수 없습니다 특성 '문서'정의의 ***와 같은

는 – xandercoded

+1

'iframe.contentWindow'이 아닌 크로스 브라우저 꽤 명확하다? –

+3

참고 : 중첩 된 삼항 연산자에 "아니오"라고 말하십시오. – FishBasketGordo

답변

3

DOM 요소를 찾고 있습니다.

<iframe> 

은 iframe은 HTML 태그의 이름 (ID = "값"으로 정의된다)이 요소의 id의 값이 아닌, 그래서 당신이 사용하려는 :

document.getElementsByTagName('iframe')[0] 

변경 0 페이지에 iframe이 하나만있는 경우에도 getElementsByTagName()은 결과 배열을 반환하므로 페이지에 여러 iframe이있는 경우 원하는 인덱스를 지정해야합니다. 다음과 같이

또한, 당신은 당신의 삼항 작업을 간소화 할 수 있습니다 :

ifrm = ifrm.contentWindow ? ifrm.contentWindow.document : ifrm.contentDocument; 

당신이 쓰는) 당신 (오픈에 액세스 할 수 있습니다 모든 브라우저에서 iframe을위한 문서 객체를 얻을 수있는이 방법을() , 및 close() 메소드 및 readyState 속성이 있습니다.

+1

감사합니다 ... 많이 좋아요! 너무 사용해보십시오 ID가 최상입니다, parent.document.getElementById (XXXX); 필요 없다 [0] ;-) – KingRider

+0

동의. ID를 사용하면 실제로 원하는 요소를 검색하는 것이 더 확실해 지므로 더 좋습니다. –

2

태그 뒤에 자바 스크립트 소스를 넣으십시오. 이

<html> 
<head> 
</head> 
<body> 
<iframe> 
<script> 
blah blah 
</script> 
</body> 
</html> 
관련 문제