- html5
- html5/VA
- html5/canvas
- html5/drag-and-drop
- html5/form
- html5/geolocation
- html5/offline-web-application
- html5/others-api
- html5/outline
- html5/overview
- html5/richtext-edit
- html5/video&audio
- html5/web-storage
- html5/web-workers
- html5/webSqlDatabase
- html5/websocket
- html5/๋ฌธ์ ์
- html5practice/roundRect
- html5practice/์ฆ๊ฒจ์ฐพ๊ธฐ๋ชฉ๋ก๋ง๋ค๊ธฐ
1. ์ปค๋ฎค๋์ผ์ด์ API ¶
- ํ๋ก๊ทธ๋จ๊ฐ์ ๋น๋์์ผ๋ก ๋ฉ์ธ์ง ์ ๋ฌ : ๋์จํ ๊ฒฐํฉ(loosely coupled)
- ๋ฉ์ธ์ง : ์์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ์ฒด ๋๋ ๋จ์ ๋ฌธ์์ด
- ํต์ ์ํ์ ์ฃผ์ฒด : ์๋์ฐ, ๋ฐฑ๊ทธ๋ผ์ด๋ ํ์คํฌ, ์๋ฒ์์ ๋์ํ๋ ํ๋ก๊ทธ๋จ
- ๋ฉ์ธ์ง ์ด๋ฒคํธ : ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ( data, origin, lastEventid, source, ports)
- ๋ฉ์ธ์ง ์์ : onmessage์ด๋ฒคํธ ํธ๋ค๋ฌ, ์ด๋ฒคํธ ๋ฆฌ์ค๋ (MessageEvent๊ฐ์ฒด ์ป์)
2. ํฌ๋ก์ค ๋ํ๋จผํธ ๋ฉ์ธ์ง ¶
- ๋ฉ์ธ์ง์ ์ก์์ ์ ํตํด ๋ ์ด์์ ์น ํ์ด์ง๊ฐ ์๋ก ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ์
- ๋๋ฉ์ธ์ด ๋ค๋ฅธ ์นํ์ด์ง๋ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ๋ฅ
- ์ก์ : postMessage(data, ports, targetOrigin)
- ์์ : onmessage() ์ด๋ฒคํธ ํธ๋ค๋ฌ
- postMessage(data, ports, targetOrigin)
- data : ์์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด
- ports : messagePort๊ฐ์ฒด, ์๋ต๊ฐ๋ฅ
- targetOrigin : ๋ฉ์ธ์ง๋ฅผ ์์ ํ๋ ๋๋ฉ์ธ(ํ๋กํ ์ฝ+๋๋ฉ์ธ+ํฌํธ๋ฒํธ)
- data : ์์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด
- ๋ณด์์ ์ํด ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์๋์ ์ ์ ํ์ธ ํ์
- onMessage ์ด๋ฒคํธ ํธ๋ค๋ฌ
// ๋ฉ์ธ์ง๋ฅผ ์์ ํด MessageEventํ์ ๊ฐ์ฒด ์ป์ window.onmessage = function(e) { // origin ์์ฑ์ผ๋ก๋ถํฐ ์ก์ ์ฒ ํ์ธ if(e.origin == "http://localhost"){ // data ์์ฑ์ผ๋ก ์์ ๋ ๋ฉ์ธ์ง ํ์ธ alert(e.data); } };
- ์ด๋ฒคํธ ๋ฆฌ์ค๋
// ๋ฉ์ธ์ง๋ฅผ ์์ ํด MessageEventํ์ ๊ฐ์ฒด ์ป์ window.addEventListener("message", function(e) { .... }, false);
- ๋ฉ์ธ์ง ์ก์ ์
var destFrame = document.getElementById("message-dest"); destFrame.contentWindow.postMessage("๋ฉ์ธ์ง ๋ด์ฉ", /*ํฌํธ ์๋ต๊ฐ๋ฅ*,/ "http://desc.example.com");
3. ์ฑ๋ ๋ฉ์ธ์ง ¶
- ๋ค๋๋ค ๋ฉ์ธ์ง ํต์ ์ ์คํํ๊ธฐ ์ํ API
- ์ฑ๋ : ๋ฉ์ธ์ง ์ก,์์ ์ ์ค๊ฐํ๋ ๊ฐ์ฒด, MessageChannelํ
- MessageChannel : ๋๊ฐ์ ํฌํธ๊ฐ์ง ํฌํธ1 -> ํฌํธ2, ํฌํธ2 -> ํฌํธ1
- ํฌํธ : MessagePort๊ฐ์ฒด
- start() : ํฌํธ๋ฅผ ์ด์ฉํ ์ ์๋๋ก ํ๋ค. ์ฑ๋ ๋ฉ์ธ์ง ์ํ์ ๊ฐ๊ฐ์ ํฌํธ์ ๋ํด start()๋ฅผ ํธ์ถ
- close() : ํฌํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํจ
- postMessage(message, ports) : ๋ฉ์ธ์ง ์ก์
- onmessage : ๋ฉ์ธ์ง ๋์ฐฉ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ํธ์ถ๋จ
- start() : ํฌํธ๋ฅผ ์ด์ฉํ ์ ์๋๋ก ํ๋ค. ์ฑ๋ ๋ฉ์ธ์ง ์ํ์ ๊ฐ๊ฐ์ ํฌํธ์ ๋ํด start()๋ฅผ ํธ์ถ
- ์ฑ๋์ ์ด์ฉํ ๋ฉ์ธ์ง ์ก์
// ์๋ต๊ฐ๋ฅ channel.port1.start(); channel.port2.start(); // ํฌํธ๋ฅผ ์ด์ฉํ ๋ฉ์ธ์ง ์ก์ channel.port1.postMessage("TEST");
4. ํฌํธ ๊ณต๊ฐ ¶
- ํฌํธ๋ฅผ ์ก์ ํ์ฌ ์์ ์๊ฐ ์ก์ ์์ ํฌํธ์ ์ง์ ์ ๊ทผํ ์ ์๊ฒํจ
- ํฌํธ๋ ๊ฐ ๋ณต์ฌ๋ก ์ ๋ฌ๋จ
- ๋ฐ์ ํฌํธ๋ PostMessgae()์ ports์ธ์์ ๋ฐฐ์ด ํํ๋ก ์ ๋ฌ๊ฐ๋ฅ
- ์ฃผ์ : ๋ฐฐ์ด์์ null์ด ํฌํจ๋ ๋, ์ด์ ์ postMessage()์ ์ธ์๋ก ์ ๋ฌ๋ ์ ์ด ์๋ ํฌํธ๊ฐ ํฌํจ๋ ๋, ํ ์ฑ๋์ ํฌํธ1๊ณผ ํฌํธ2๊ฐ ๋์์ ํฌํจ๋ ๋
- ์ฃผ์ : ๋ฐฐ์ด์์ null์ด ํฌํจ๋ ๋, ์ด์ ์ postMessage()์ ์ธ์๋ก ์ ๋ฌ๋ ์ ์ด ์๋ ํฌํธ๊ฐ ํฌํจ๋ ๋, ํ ์ฑ๋์ ํฌํธ1๊ณผ ํฌํธ2๊ฐ ๋์์ ํฌํจ๋ ๋
5. ๊ด๋ จ ์ฌ์ดํธ ¶
- HTML5 ์คํฐ๋ ์นดํ http://cafe.naver.com/webappdev.cafe