2012-06-11 1 views
0

액세스 및 수정은 iframe 내용은 PostMessage를가 jQuery.contents() 대

$('#iframe_id').contents().find('.stuff_to_modify).addClass('whatever');

으로 가능하지만 않는 iframe을,에서 스크립트에 do_something 메시지를 보내, window.postMessage 이벤트를 사용하여 수도 있습니다 메시지가 수신되었을 때의 변경 사항 (해당 클래스 추가).

나는 두 가지 방법 (단점, 이점)의 차이점은 무엇인가?

JQuery와 방법은 내가 더 이상 내 iframe에 모든 스크립트를 포함 할 필요가 없기 때문에 더 좋은 것 같다

+0

jquery –

답변

2

당신이 준 window.postMessage 및 jQuery를 샘플 사이의 큰 차이는 PostMessage를 크로스 원점 통신을 가능하게한다는 것입니다.

iframe을 호스팅하는 상위 페이지가 도메인 A에서 왔고 iframe의 콘텐츠가 도메인 B에서 온 것이면 postMessage를 사용하면 통신 할 수 있지만 jQuery를 사용하면 보안 오류가 발생합니다.

제공된 링크는 브라우저의 window.postMessage 구현에 대한 Java 스크립트 래퍼이며이를 지원하지 않는 브라우저의 창 위치 해시 폴링으로 되돌아갑니다. 다른 이점은 링크 자체에 나열됩니다.

두 페이지가 같은 출처, 즉 동일한 도메인에서 제공된 페이지 인 경우 jQuery 접근 자체를 수행 할 수 있습니다. 두 가지 다른 출처에서 온 경우, JS 랩퍼를 사용해야 할 수도 있습니다.

+0

을 사용해야하는 경우 상위 문서에 https가 있고 iframe이없는 경우 여전히 작동합니까? – Alex

+0

@Alex 프로토콜, 포트 및 호스트는 동일한 도메인의 두 페이지를 처리하기 위해 동일해야합니다. 따라서 하나가 http이고 other가 https 인 경우 window.postMessage가 교차 출처로 취급되므로 이동해야 할 수 있습니다. 이 시나리오도 테스트 해 볼 것을 권합니다. – Ramesh