웹 프론트엔드 H5 튜토리얼 HTML5 창/iframe 교차 도메인 메시징 API 소개_html5 튜토리얼 기술

HTML5 창/iframe 교차 도메인 메시징 API 소개_html5 튜토리얼 기술

May 16, 2016 pm 03:48 PM
html5 iframe

원래 주소: HTML5의 window.postMessage API
온라인 예시: HTML5의 window.postMessage 사용(로그를 보려면 콘솔을 열어주세요)

I window.postMessage를 캡슐화하기 위해 MooTools 플러그인 "PostMessager"를 작성했습니다. 여기를 클릭하여 다운로드할 수 있습니다.

HTML5의 window.postMessage 인터페이스 API를 이해하는 사람은 많지 않습니다. window.postMessage를 사용하면 여러 창/프레임 간에 도메인 간 데이터 및 정보 전송이 가능합니다. 본질적으로 window.postMessage는 도메인 간 Ajax 요청 역할을 합니다. 물론 원격 서버가 협력할 필요는 없습니다. 다음으로 window.postMessage의 작동 원리와 FireFox, IE8, Opera, Safari, Chrome에서 사용하는 방법을 소개하겠습니다.

1. 메시지 전송 종료
전체 과정 첫 번째 단계는 '뉴스 매체'를 설정하는 것입니다. 이 메시지 소스를 통해 새로 열린 창(또는 iframe)에 창 수준 데이터(메시지)를 보낼 수 있습니다. 다음 예에서 새 창으로 메시지를 보내는 빈도는 6초마다 한 번씩이며, 대상 창에서 반환된 응답 정보를 처리하도록 이벤트 수신이 설정되어 있습니다.

코드 복사
코드는 다음과 같습니다.

함수 추적(메시지){
var infos = Array.prototype.slice.call(arguments,0).join(" ");
if("console" in window){
console.log(infos); } else {
alert(infos);
}
};
// 팝업 창 만들기
var domain = 'http://scriptandstyle.com'; var myPopup = window.open (domain '/windowPostMessageListener.html','myWindow')
//정기적으로 메시지 보내기
setInterval(function(){
var message = '지금 시간:' (new Date().getTime( ));
trace('데이터 소스. 전송된 메시지: ' message)
myPopup.postMessage(message,domain); //데이터 정보 전송 및 대상 URI 설정
},6*1000 );
function binEvent(target,noOnEventName,handler){
if(window.addEventListener){
target.addEventListener(noOnEventName,handler)
} else if(window .attachEvent){
// IE의 청취 설정 기능은 attachmentEvent
target.attachEvent("on" noOnEventName,handler)
} else {
target["on" noOnEventName]=handler ;
}
};
// 수신된 정보를 모니터링합니다.
bindEvent(window,'message',function(event) {
// 특정 도메인의 메시지만 수신합니다
if(event.origin !== 'http://scriptandstyle.com') return;
trace('수신된 응답 정보: ',event.data)
},false); 🎜>
원본 기사의 작성자는 이벤트를 바인딩하기 위해 window.addEventListener 메서드를 사용하지만 IE에서는 오류가 보고됩니다(IE는 window.attachEvent). 물론 이벤트를 래핑하는 함수를 만들 수도 있습니다. 또는 MooTools 또는 jQuery/dojo와 같은 이미 만들어진 클래스 라이브러리를 사용하여 달성할 수 있습니다.
위의 예에서 새 창이 정상적으로 열리면 창 개체 참조 myPopup을 통해 메시지를 보내고 일치해야 하는 URI(프로토콜, 호스트 이름, 포트 번호)를 지정할 수 있습니다(사용자가 자식 창에서 점프하는 경우). 창을 다른 페이지로 이동하면 메시지가 전송되지 않습니다.
마찬가지로 메시지를 수신하도록 이벤트 핸들러 함수도 바인딩했습니다. 다시 한번 말씀드리지만, 메시지 이벤트의 출처 속성을 확인하는 것이 중요합니다. 왜냐하면 모든 URI에서 보낸 메시지를 수신할 수 있기 때문입니다. 그래야 여러 프레임과 상호 작용할 때 혼란을 겪지 않을 것입니다. 원본을 확인한 후 이 메시지를 처리하는 방법은 특정 비즈니스 및 요구 사항에 따라 다릅니다.

iframe을 사용하는 경우 코드는 다음과 같습니다.





코드를 복사하세요.
코드는 다음과 같습니다. // 또 다른 창을 생성합니다. (iframe,frame,frameset,top,window는 모두 창 관련 객체입니다.)
var domain = 'http://scriptandstyle.com ';
var iframe = document.getElementById('myIFrame').contentWindow;
// 루프에서 메시지를 보내는 방법도 사용할 수 있습니다. . .
setInterval(function(){
var message = '현재 시간: ' (new Date().getTime());
trace('데이터 소스.메시지 전송됨: ' message);
iframe.postMessage(message,domain); //데이터 정보 전송 및 대상 URI 설정


iframe 객체의 contentWindow 속성에 액세스할 수 있는지 확인하세요. —— iframe 객체뿐만이 아닙니다.


2. 메시지 수신 종료

전체 과정의 두 번째 단계는 대상 창을 준비하는 것입니다. 대상 창에서 해야 할 일은 메시지 이벤트를 수신하고 이벤트의 원본 메시지 소스를 확인하는 것뿐입니다. 다시 알림: 메시지 이벤트 핸들러는 모든 도메인 이름에서 전송된 메시지를 수락할 수 있으므로 원본을 확인하고 신뢰 목록의 메시지만 처리하는 것이 매우 중요합니다.



코드 복사
코드는 다음과 같습니다.

// 수신된 정보를 모니터링합니다.
bindEvent(window,'message',function(event) {
// 특정 도메인의 메시지만 수신합니다
if(event.origin !== 'http://davidwalsh.name') return;
trace('청취한 정보: ',event.data)
//메시지 답장
event .source .postMessage(""안녕하세요, 친구 여러분, event.origin이라는 메시지를 받았습니다);
},false)

위의 예는 요청 사각형에 대한 응답 메시지입니다. .
message 이벤트의 중요한 속성은 다음과 같습니다.
source - 메시지를 보내는 창/iframe 개체
origin - 메시지를 보내는 창에 해당하는 URI(프로토콜, 도메인 및 포트인 경우) 지정)
데이터 - 특정 데이터 정보
이 세 가지 객체는 메시징 시스템 및 검증에 필수적입니다.

window.postMessage 사용 시 주의 사항
다른 모든 웹 기술과 마찬가지로 부적절하게 사용하면(이벤트 소스를 확인하지 않고) 위험이 명백합니다. 물론 보안은 귀하에게 달려 있습니다.
window.postMessage는 JavaScript 기술의 PHP와 매우 유사합니다(하하, 광고가 거의 없습니다!).window.postMessage는 매우 멋진 기술입니다. 어떻게 생각하시나요?
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML의 중첩 테이블 HTML의 중첩 테이블 Sep 04, 2024 pm 04:49 PM

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML의 테이블 테두리 HTML의 테이블 테두리 Sep 04, 2024 pm 04:49 PM

HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML 여백-왼쪽 HTML 여백-왼쪽 Sep 04, 2024 pm 04:48 PM

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML 테이블 레이아웃 HTML 테이블 레이아웃 Sep 04, 2024 pm 04:54 PM

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 정렬 목록 HTML 정렬 목록 Sep 04, 2024 pm 04:43 PM

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML에서 텍스트 이동 HTML에서 텍스트 이동 Sep 04, 2024 pm 04:45 PM

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.

HTML 입력 자리 표시자 HTML 입력 자리 표시자 Sep 04, 2024 pm 04:54 PM

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

HTML 온클릭 버튼 HTML 온클릭 버튼 Sep 04, 2024 pm 04:49 PM

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

See all articles