2013-08-21 3 views
1

은 순수한 자바 스크립트를 사용하여 IFrame에 액세스 할 때 몇 가지 조언이 필요합니다.IFrame 및 요소에 액세스

컨텍스트 : "Func1"기능이 포함 된 JS 스크립트 "A.JS"가 있습니다. 페이지에서이 기능이 IFrame을 무작위로 생성되고 있습니다

<script> A.Func1();</script> 

<iframe src='xyz.com' title='Hello' type='portlet.iframe' > </iframe> 

아래와 같이 IFrame을 마우스 오른쪽 버튼 전에 호출됩니다, 그래서 실행 시간에 그 ID와 이름을 알 수 없습니다. 따라서 내가 접근 할 수있는 유일한 방법은 IFrame의 배열에 핸들을 가져 와서 각각의 제목을 통해 올바른 것을 식별 할 때까지 루프를 반복하는 것입니다.

JS 함수 호출은 IFrame의 앞/위입니다.

내 기능이 Func1() 인 지금 내 코드는 다음과 같습니다. 올바른 IFrame에 대한 핸들을 얻으려고했지만 아래의 모든 메서드가 0 배열의 배열을 반환합니다. 크롬 버전 29에서이 작업을 일시 중지하고보고 있습니다. 사실 마지막 배열 iframeNodesAll4은 "Windows"를 가치로 보여줍니다!

var iframeNodesAll1 = document.getElementsByTagName("iframe"); 
var iframeNodesAll2 = window.parent.document.getElementsByTagName("iframe"); 
var iframeNodesAll3 = window.document.getElementsByTagName("iframe"); 
var iframeNodesAll4 = window.frames; 

그럼 내가 무엇을 놓치고 있습니까? 스크립트가 IFrame 전에 호출되거나로드되기 때문입니까?

감사합니다.

+0

스크립트가 실행되는 순간에는 존재하지 않는 요소에 대한 참조를 얻을 수 없습니다. –

답변

0

IFrame보다 먼저 스크립트가 호출되고로드 되었기 때문입니까?

예, 그게, iframe을 이후에 함수 호출을 이동하려고하고, 페이지가로드 될 때까지

편집

은 또한 당신이 기다릴 수 어떻게 볼 문제라고 생각

<script> 
window.onload = function() { 
    A.func1(); 
} 
</script> 
+0

사이먼, 오, 아니, 그건 내 최악의 악몽이 될 사실이라면. 자바 (JavaScript) A.Func1()이 IFrame 및 HTML 요소에 계속 액세스 할 수있는 방법이 있습니까? 나는 기존 응용 프로그램에 대한 사용자 정의 작업을 수행하고 A.Func1()에서 직접 수행하는 것이 가장 덜 침해적인 방법입니다. 감사합니다 – sean

+0

다른 옵션은 페이지가로드 될 때까지 기다리는 것입니다, 나는 그 방법으로 내 대답을 편집 할 것입니다. – SimonR

관련 문제