提问人:Ryan Walker 提问时间:9/15/2023 最后编辑:Ryan Walker 更新时间:9/15/2023 访问量:107
如何在 React 中监听 iframe 内的点击?
How to listen for click inside an iframe in React?
问:
我正在使用 iframe 在 React 中显示获取的 HTML 文档,并希望监听 iframe 中对 DOM 元素的点击。
例如,我想控制台 .log 我在 iframe 中单击的 DOM 元素
我尝试使用 useRef 和 onClick,但它似乎在 iFrame 上不起作用
我正在使用 Next.js 在添加到 iframe 之前获取网站 HTML
export default function Home() {
const [html, setHtml] = useState()
const ref = useRef(null);
const getDownload = async () => {
const response = await fetch('http://localhost:3000/api/getWebsite')
const data = await response.json()
setHtml(data)
}
return (
<main>
<iframe srcDoc={html} ref={ref} ></iframe>
</main>
)
}
答:
0赞
Unmitigated
9/15/2023
#1
您可以在加载帧后访问帧。contentDocument
useEffect(() => {
const frame = ref.current;
function loadHandler() {
frame.contentDocument.addEventListener('click', e => {
console.log('clicked', e.target);
});
}
frame.addEventListener('load', loadHandler);
return () => frame.removeEventListener('load', loadHandler);
}, []);
评论
0赞
Unmitigated
9/15/2023
工作示例(打开控制台查看输出)
0赞
Ryan Walker
9/15/2023
这很有效,感谢您提供示例!
0赞
Unmitigated
9/15/2023
@RyanWalker 很乐意帮忙。
评论