2009-04-24 5 views
2

Air에서 iframe의 내용에 액세스하는 방법을 알아 내는데 많은 어려움을 겪고 있습니다. 다음은 내가 테스트 해본 예제 jquery 코드입니다.Adobe Air에서 iframe의 내용에 액세스

 

$(document).ready(function(){ 
    $("#frame").ready(function(){ 
     air.trace($("#frame").contents().find("body").html()); 
     air.trace(window.frames["frame"].innerHTML); 
     air.trace(document.getElementById("frame").innerHTML); 
    }); 
}); 
 

사용중인 iframe이 있습니다. 당신은 내용이 항상 하나, 널 (null) 정의되지 않았거나 빈 문자열입니다 볼 수 있듯이

<iframe src="http://google.com" id="frame" width="100%" sandboxRoot="http://google.com/" documentRoot="/" name="frame" height="600"></iframe> 

위의 코드의 출력은

 

null 
undefined 

 

입니다. iframe의 내용에 액세스하지 못하게하는 내용이 누락 되었습니까? 어떤 제안이라도 대단히 감사하겠습니다.

+0

iframe을 게시 할 때 제거 된 것으로 보입니다.이것은 내가 여기에 게시 할 수있는 첫 번째 게시물입니다. – tomfmason

답변

3

이 솔루션은 여기에 http://help.adobe.com/en_US/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7f08.html

내가 그것을 작동있어 방법의 예입니다 여기에 있었다. sandboxRoot에서 (예. http://google.com/local)로부터 요청

<iframe src="http://google.com/local/iframe.html" id="frame" width="100%" sandboxRoot="http://google.com/local/" documentRoot="app:/" name="frame" height="600"></iframe> 

뭐든지 문서 루트에서 사용될하고 (google.com) 같은 도메인에있는 것처럼 취급된다.

iframe.html 동일한 도메인에서 온 것처럼 Google iframe에 액세스 할 수 있습니다.

은 내가이를 알아 내기 위해 노력, 거기에 알고이

+0

동일한 문제가 발생하여 솔루션을 이해하는 데 어려움이 있습니다. 좀 더 설명해 주시겠습니까? 특히 src = "http://google.com/local/iframe.html"처음에는 http://google.com입니까? –

+0

스크래치. 나는 그 문제를 해결했다. 당신은 생명의 은인입니다. –

1

Adobe AIR은 브라우저 (WebKit actually) 일 뿐이며 따라서 브라우저가 따르는 규칙을 따릅니다. 여기서 귀하의 문제를 지배하는 규칙을 "동일 출처 정책"이라고합니다.

동일한 도메인에 있지 않으면 브라우저에서 해당 사이트의 데이터 나 콘텐츠에 액세스 할 수 없으므로 결과를 얻을 수 있습니다. 다른 도메인에서 데이터를 가져 오려면 Json 기반 AJAX API를 사용하십시오. 다른 사람이이 문제를 갖는

예 :

+0

즉, 동일한 출처 정책 – Rob

+0

조금 더 낫습니다. – cgp

+0

나는 같은 기원 정책에 익숙하지만 공중에서 적용 할 것이라고는 생각하지 않았습니다. 로컬 iframe에 대한 실제적인 사용법은 많이 없습니다. iframe의 dom에 액세스 할 수 있는지 여부에 의존하는 기능을 추가 할 수 없으므로 실제로 실망 스럽습니다. – tomfmason

2

으로 많은 사람들을 :) 할 수있는 방법이어야했다.

솔루션은 tomfmason 이상 제공하지만, 그렇다하더라도 실제로 가 무슨 일이 있었는지을 이해하는 나에게 나이를했다한다.

여전히 AIR html + js를 사용하여 웹 브라우저를 만들거나 원격 웹 페이지에서 데이터를 가져 오는 사람들을 돕기 위해 매우 기본적인 AIR 3.2 프로젝트 (1.7 MB .zip 파일)를 만들었습니다. 그에서 찾을 수 있습니다 : 하나는 초기 복잡한 과거 도착하면

http://adobe-air-js.blogspot.com/2011/12/air-reading-dom-of-remote-web-page.html

AIR는, 실제로 정말 아주 매끄러운입니다. 나는 그것이 티타늄보다 더 믿을만하고/쓸모있는 magnatude의 순서라고 생각한다.

행운을 빈다. ~ Chris

관련 문제