2013-01-16 5 views
0

목표를 달성하고 싶습니다. 하나의 입력에 도메인 이름을 입력하고 iframe에로드하는 버튼을 클릭하면됩니다. 내가 가진 문제는 iframe에 특정 사이트를로드 한 후 iframe에로드 된 사이트의 DOM을 어떻게 얻을 수 있습니까? 내가 선택한 요소의 정확한 경로를 iframe의 새로로드 된 사이트에서 클릭하여 저장해야합니다. 어떤 도움이라도 대단히 감사 할 것입니다. 고맙습니다.로드 후 iframe의 콘텐츠 가져 오기

답변

1

당신은 contentDocument 특성을 통해 <iframe>의 내용에 액세스 할 수 있습니다.

var iFrameContent = $('myIFrame')[0].contentDocument; 
$(iFrameContent).find('.mySelector').text(); 

나는 또한 <iframe>src이 스크립트와 같은 도메인의 경우 <iframe>의 내용 만 수행 할 수 있습니다 접근 지적한다. 의 src이 다른 도메인의 URL 인 경우 브라우저는 콘텐츠에 대한 액세스를 거부합니다.

이것은 CORS입니다.

UPDATE :

는 CORS 제한 해결하기 위해, 당신은 <iframe>src 인 URL에 대한 서버 측 프록시를 작성해야 (그리고 꽤 간단 할 수있다).

  1. String 매개 변수로 실제 URL을한다 : 나는 (예를 들어) ASP.Net에서이 같은 작업을 수행하는 경우

    , 나는 웹 서비스를 작성합니다.

  2. HTTPWebRequest 개체 (또는 유사)를 사용하여 URL 콘텐츠를 가져옵니다.
  3. 브라우저로 다시 되돌립니다.

그런 다음 당신은 당신의 <iframe>src는 "http://mysite.com/getURLService?url=www.lalala.com은"와 내용을 얻을 내용이 지금 "http://mysite.com"에 의해 전달하기 때문에 설정할 수 있습니다.

+0

글쎄 ... 그게 문제 야, 같은 도메인 이름이 아니야, 내 도메인에서 그걸하고 있고, iframe에 다른 사이트를로드하고있다. 마치 www.lalala.com처럼 DOM을 얻고 싶다. 내 것이 아니라 ... 어쨌든 일어날 수 있습니까? –

+0

@LachezarRaychev : 답변이 업데이트되었습니다. – pete

0

당신은

like $("iframe").contents().find();.contents()을 사용하는 등

+0

레코드의 경우 내용()을 사용하여 iframe의 내용을 가져올 수 있습니다. 그것은 jQuery 문서에서 이렇게 말했고 나는 여러 번 해냈습니다. –