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
https://developer.mozilla.org/ko/docs/Web/API/Window/postMessage
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] PC Chrome์์ ์๋๋ก์ด๋ Mobile ๋ธ๋ผ์ฐ์ ์น ๋๋ฒ๊น ํ๊ธฐ (0) | 2022.04.21 |
---|---|
[Javascript] XMLHttpRequest ํต์ (0) | 2021.12.30 |
๋๊ธ