상동 정책의 한계로 인해, 도메인 간 커뮤니케이션은 항상 어려운 문제였습니다. 물론 많은 해결책이 있습니다.
1. document.domain+iframe의 설정은 기본 도메인에 적용되며 하위 도메인은 다릅니다.
2. iframe 및 location.hash를 사용하여 데이터는 URL에 직접 노출되며 데이터 용량 및 유형은 제한됩니다.
3. Flash LocalConnection, 객체는 하나의 SWF 파일 또는 여러 SWF 파일간에 통신 할 수 있습니다.
동일한 클라이언트, 교차 신청 및 크로스 도메인에 속하십시오.
Window.name 데이터 및 크로스 도메인 iframe 정적 프록시 동적 전송 방식을 저장하고 페이지 URL 변경으로 인해 변경되지 않는 Window.Name의 기능을 완전히 활용합니다.
인터넷에는 많은 예제 코드가 있으며 직접 검색 할 수 있습니다.
HTML5에서 가장 멋진 API 중 하나 : 교차 문서 메시지. Advanced Browsers Internet Explorer 8+, Chrome, Firefox, Opera 및 Safari는 모두이 기능을 지원합니다. 이 기능은 주로 정보를 수락하는 "메시지"이벤트와 메시지를 보내는 "postmessage"메소드를 포함하여 구현하기가 매우 간단합니다.
메시지를 보내는 "postmessage"메소드
외부 창에 메시지를 보내십시오.
코드 사본은 다음과 같습니다. Otherwindow.postMessage (메시지, Targetorigin);
Otherwindow : 대상 창, 즉 창문으로 전송되는 창을 나타냅니다.
매개 변수 설명 :
1.message : 보내야 할 메시지입니다. 유형은 문자열, 개체입니다 (IE8, 9에 의해 지원되지 않음).
2. Targetorigin : 제한된 메시지 수신 범위이며 '*'를 제한하지 않습니다.
정보를 받아들이는 "메시지"이벤트
코드 사본은 다음과 같습니다.
var onmessage = function (이벤트) {
var data = event.data;
var origin = event.origin;
// 일부를 수행합니다
};
if (typeof window.addeventListener! = 'undefined') {
window.addeventListener ( 'message', onmessage, false);
} else if (typeof window.attachevent! = 'undefined') {
// IE의 경우
window.attachevent ( 'onmessage', onmessage);
}
콜백 함수의 첫 번째 매개 변수는 이벤트 객체를 수신하며 세 가지 공통 속성이 있습니다.
1.Data : 메시지
2. Origin : 소스 주소
3. 소스 : 소스 Domwindow 객체
물론, 사후 관리에는 몇 가지 단점이 있습니다.
1. IE8 및 IE9 지원 문자열 유형으로 전달 된 데이터 유형 값은 JSON 객체와 문자열 사이의 상호 변환을 사용 하여이 문제를 해결할 수 있습니다.
2.ie6, ie7은 개인적으로 Window를 생각해야합니다.