Q. iframe ์์์์ ์คํฌ๋กค ์ด๋ฒคํธ๋ฅผ ๋ง๊ณ parent element ๋ฅผ ๋์ ์คํฌ๋กค
<iframe />
<div class="event-hooker"/>
- ํํ๋ก ๊ตฌ์ฑํ๋๊ฒฝ์ฐ
event-hooker
์ pointer-events: none
์ ์ฃผ์
ํ๋ฉด ์๋ฌด๋ฐ ์ด๋ฒคํธ๋ ํธ๋ฆฌ๊ฑฐ ๋์ง ์๋๋ค
<div class="event-wrapper">
<iframe />
</di>
-
event-wrapper
์์ ํน์ ์ด๋ฒคํธ๋ stopPropagation
์ผ๋ก ํต๊ณผ์ํค์ง ์๋๋ค(์บก์ณ๋ง ๋จ๊ณ)
- ํด๋ณด๋ iframe ์ธ ๊ฒฝ์ฐ๋ ์ด๋ฒคํธ๋ฅผ ๋ถ๋ชจ๋ณด๋ค ๋จผ์ ๋ฐ๋ ๊ฒ์ผ๋ก ๋ณด์ฌ์ ํด๊ฒฐ๋์ง ์๋๋ค
<div class="target" />
<iframe />
- iframe ์ ํน์ ์ด๋ฒคํธ๋ฅผ
target
์ผ๋ก ํ ์คํ๋ค
iframe.contentWindow.body.onwheel = (ev) => target.dispatchEvent('wheel', ev)
- cross-origin ์ธ ๊ฒฝ์ฐ ์๋ฌ ๋ฐ์
- Uncaught DOMException: Blocked a frame with origin "http://localhost:4000" from accessing a cross-origin frame.
- postMessage ๋ก ์ฐํ๋ฅผ ํด์ผํ ๊ฒ์ผ๋ก ๋ณด์