2010-06-21 3 views
16

외부 URL을로드하는 iframe의 DOM에 액세스하려고합니다. 물론 도메인 간 보안으로 인해 "Permission denied"오류가 발생합니다. 이 작품을 어떻게 만들 수 있습니까? json으로 끝내는 무언가를 보았습니다 (하지만 외부 소스에서 json 문자열을 얻을 수 없음). 그리고 HTML5 postmessage로 끝난 무언가를 보았습니다.jQuery 크로스 도메인 iframe 스크립팅

당신은 라이브를 볼 수 있습니다 http://jsfiddle.net/QPBvJ/

코드는 다음과 같습니다

$(document).ready(function(){ 
    $('#get').live('click', function() { 

     var currentIFrame = $('#frameDemo'); 
     currentIFrame.contents().find("a").css("background-color","#BADA55"); 

     alert ("done") 
    }); 
    }); 

<iframe src="http://api.jquery.com/" width="80%" height="600" id='frameDemo'></iframe> 
<button id="get">Get</button> 

이 무엇을 가장 쉬운 방법은이 일을 할 것입니다. 감사합니다.

+0

: ** [로드 크로스 도메인 HTML 페이지를 jQuery를 AJAX와 (HTTP

Chrome는 크로스 도메인은 명령 행 인수로 호출 할 수 있습니다 : //stackoverflow.com/a/17299796/2247494)** – jherax

답변

27

이 방법을 사용할 수 없습니다. 접근하려고 시도하는 외국 도메인이 C.O.R.S, JSONP 또는 postMessage과 같은 절차를 지원하지 않는 한.

은 (언제나처럼) 몇 가지 예외가있다 : 당신이 인스턴스에 대한 웹 애플리케이션을 처리하는 경우

, 당신은 그들이 cross-domain-calls에 대한 액세스 권한을 부여해야한다는 사용자를 알 수 있습니다.

예를 들어 게코/파이어 폭스에서는 ajax/iframes를 통해 외국 도메인에 액세스 할 수있는 브라우저를 할 수

netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead') 

를 호출 할 수 있습니다. 이 시나리오에서는, 사용자는이 작품을 만들기 위해 about:config에서 true

signed.applets.codebase_principal_support 

을 설정할 수 있습니다. 이 세상의 Internet Explorers에서

enable로 설정해야 깊이 security 탭에 숨겨진 allow cross-domain access 같은라는 설정이 있습니다. 당신은 크로스 도메인 요청에 관련하여이 게시물을 확인하실 수 있습니다

chrome.exe --disable-web-security 
+0

정보에 대한 고맙습니다. 나는 이것에 대해 연구 중이다. – Mircea

+0

여기에 크로스 도메인 요청과 관련된 몇 가지 정보가 있습니다. ** [jQuery AJAX로 크로스 도메인 HTML 페이지로드하기] (http://stackoverflow.com/a/17299796/2247494) ** – jherax

관련 문제