2012-08-17 2 views
1

동일한 로컬 컴퓨터 (크로스 도메인이 아님)에있는 파일로 설정된 src가있는 페이지 내부에 Iframe이 있습니다.iframe : iframe 내부의 하위 요소에서 상위 항목에 액세스

그래서 나는이처럼 보이는 페이지가 : iframe이의 내부

<html> 
<head/> 
<body><iframe id="something" src="somepage.html"/></body> 
</html> 

일부 내용

<html> 
    <head/> 
    <body> 
     <li> 
     <ul>stuff</ul> 
     </li> 
    </body> 
    </html> 

내 질문에, 나는 (내 인덱스 페이지에) 변수가 이 요소는 현재 iframe 내부에있는 var element = <ul>stuff</ul> 요소를 가리 킵니다.

이 변수에서 부모 iframe에 액세스하여 id 'something'을 (를) 얻을 수 있기를 원합니다.

나는 운이

$(element).find('iframe') 

으로 찾아 사용하여 일부 jQuery를 시도하고있다 그리고 나는 내가 잘못 가고 어디에 ... 내가 다른 솔루션을 검색 좀하지만이 모든 iframe이 외부되고 관련된 궁금 찾고, 내 생각 엔 내가 안으로 찾고있어! 어떤 빛을 비춰주는 데 도움이 될만한 사람이 있습니까?

+0

귀하의 질문에 혼란 스럽습니까? –

답변

1

iframe 요소의 id를 이름과 같은 것으로 찾지 못하는 것 같습니다.

var $matching = $(parent.document).find('iframe').filter(function(){ 
    var srcTokens = this.src.split('/'); 
    return srcTokens[srcTokens.length-1]=='somepage.html'; 
}); 
:

하지만 자연 보인다 iframe을 ("somepage.html")에서 HTML 파일의 이름을 알고 가정하면, 당신은 부모 문서에 iframe이 포함 된 요소를 얻기 위해이 작업을 수행 할 수 있습니다

<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
     </head> 
    <body> 
     <li> 
     <ul>stuff</ul> 
     </li> 
     <script> 
      var $matching = $(parent.document).find('iframe').filter(function(){ 
       var srcTokens = this.src.split('/'); 
       return srcTokens[srcTokens.length-1]=='somepage.html'; 
      }); 
      console.log($matching.attr('id')); 
      </script> 
    </body> 
    </html> 

편집 :

다음은 콘솔의 ID를 로깅, 내가 테스트하는 데 사용되는 "somepage.html"파일의 Serjio 볼되면서, 당신이 이름을 모르는 경우 location.href를 사용하는 것이 가능 html 파일의.

+0

감사합니다. – John

1

처음에는 iframe의 일부 데이터에 액세스하려는 경우 iframe의 이름을 설정하는 것이 좋습니다. 그 iframe 대응의 DOM에 액세스 할 후에는 사용할 수 있습니다 : 당신은 iframe 내부의 상위 데이터 얻고 싶은 경우에

$('ul', window.frames['iframe_name'].document); 

전역 변수

alert(window.frames['iframe_name'].some_global_var_or_function_of_iframe) 

에 액세스하려면 :

$('selector', parent.document) // for DOM 
alert(parent.some_global_var_or_function_of_parent_window) 

편집을 따라서 귀하의 경우에는 다음을 사용하십시오 :

$('iframe', parent.document).filter(function(iframe){ 
    // you can compare iframes like this 
    return iframe.getAttribute('src') == location.href 
}).attr('id') 
+1

이 "솔루션"에서는 이미 알고있는 경우 (또는 이름을 알고있는 경우)에만 ID를 찾습니다. 나는 이것이 필요한 것이라고 생각하지 않는다. –

+0

안녕하세요 Serjio, 입력 해 주셔서 감사합니다. 그러나 이것이 잘못된 대답이라고 생각합니다. iframe 내부의 요소에서 내 포함 iframe 이름이 무엇인지 묻고 싶을 때 내 iframe의 이름을 알아야합니다. 조금 더 의미가 있니? – John

+0

@John check ** EDIT ** section. 이 코드는'$ (element).find ('iframe')'완전히 잘못된 것입니다. 귀하의 질문에서 이해 한대로 ul 요소 안에 iframe이 없기 때문에 – Serjio

관련 문제