postMessage, addEventListener(, attachEvent)๋ฅผ ์ด์ฉํ iframe ๋ถ๋ชจ์ ์์๊ฐ์ ๋ฉ์์ง ํต์ ๋ฐฉ๋ฒ
- iframe ๋ฉ์์ง ํต์ ์์
1. ์์ชฝ ๋ถ๋ชจ, ์์ ์๋์ฐ์ addEventListener๋ฅผ ์ด์ฉํด message ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก
[๋ถ๋ชจ → ์์]
2. ๋ถ๋ชจ ์๋์ฐ์์ ์์ ์๋์ฐ iframe์ window.postMessage ์ด์ฉํด ๋ฉ์์ง ์ ๋ฌ
3. ๋ถ๋ชจ ์๋์ฐ๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ์์ ๋ฐ๊ณ ๋ฑ๋ก๋ ์์ ์๋์ฐ์ addEventListener์ message ์ด๋ฒคํธ ๋ฐ์์ํค๊ณ ํจ์ ํธ์ถ
[์์ → ๋ถ๋ชจ]
4. ์์ ์๋์ฐ iframe์์ ๋ถ๋ชจ ์๋์ฐ์ window.parent.postMessage ์ด์ฉํด ๋ฉ์์ง ์ ๋ฌ
5. ์์ ์๋์ฐ๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ์์ ๋ฐ๊ณ ๋ฑ๋ก๋ ๋ถ๋ชจ ์๋์ฐ์ addEventListener์ message ์ด๋ฒคํธ ๋ฐ์์ํค๊ณ ํจ์ ํธ์ถ
- ๋ฉ์์ง ์์
if(window.addEventListener){
window.addEventListener("message", function, false);
}else if(window.attachEvent){
window.attachEvent("onmessage", function );
}
- addEventListener: ์ด๋ฒคํธ ๋ฐ์์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ํจ์๋ฅผ ํธ์ถ
- attachEvent: IE 8 ์ดํ, ์คํ๋ผ์์ addEventListener ๋์ ์คํ
- function: message ์ด๋ฒคํธ ๋ฐ์์ ํธ์ถ๋๋ ํจ์๋ช
- ๋ฉ์์ง ์ก์
// ๋ถ๋ชจ => ์์(iframe)
window.postMessage(message, targetOrigin);
// ์์(iframe) => ๋ถ๋ชจ
window.parent.postMessage(message, targetOrigin);
- message: key, value ํ์์ผ๋ก ์ด๋ฃจ์ด์ง ์ ๋ฌํ ๋ฉ์์ง
- targetOrigin: ๋ฉ์์ง๋ฅผ ์์ ๋ฐ๋ ๋๋ฉ์ธ (or ๋ฌธ์์ด "*")
- ์ฐธ๊ณ ๋ฌธ์
https://developer.mozilla.org/ko/docs/Web/API/EventTarget/addEventListener
EventTarget.addEventListener() - Web API | MDN
EventTarget์ addEventListener() ๋ฉ์๋๋ ์ง์ ํ ์ด๋ฒคํธ๊ฐ ๋์์ ์ ๋ฌ๋ ๋๋ง๋ค ํธ์ถํ ํจ์๋ฅผ ์ค์ ํฉ๋๋ค.
developer.mozilla.org
https://developer.mozilla.org/ko/docs/Web/API/Window/postMessage
Window.postMessage() - Web API | MDN
window.postMessage() ๋ฉ์๋๋ Window ์ค๋ธ์ ํธ ์ฌ์ด์์ ์์ ํ๊ฒ cross-origin ํต์ ์ ํ ์ ์๊ฒ ํฉ๋๋ค. ์์๋ก, ํ์ด์ง์ ์์ฑ๋ ํ์ ๊ฐ์ ํต์ ์ด๋, ํ์ด์ง์ ํ์ด์ง ์์ iframe ๊ฐ์ ํต์ ์ ์ฌ์ฉํ
developer.mozilla.org
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] PC Chrome์์ ์๋๋ก์ด๋ Mobile ๋ธ๋ผ์ฐ์ ์น ๋๋ฒ๊น ํ๊ธฐ (0) | 2022.04.21 |
---|---|
[Javascript] XMLHttpRequest ํต์ (0) | 2021.12.30 |
๋๊ธ