iframe监听鼠标点击事件

本文介绍如何通过JavaScript实现网页中侧边栏的显示与隐藏功能。点击按钮展示侧边栏,点击iframe区域则隐藏侧边栏。文章详细解释了如何在iframe加载完成后为其注册点击事件。

需要实现的页面逻辑是: 
1. 点击父窗体中按钮,显示侧边栏; 
2. 点击页面其他区域(iframe)可以隐藏侧边栏

先构造页面文档结构:

<html>
    <body>
        <aside id="sidebar">
            <%--这是需要隐藏的侧边栏--%>
        </aside>
        <button><%--点击按钮显示侧边栏--%></button>
        <iframe id="my-iframe">
            <%--获取此区域的点击事件--%>
        </iframe>
    </body>
</html>

因为相对于父窗体,iframe中加载的是一个相对独立的document文档,如果直接在父窗体中使用iframe.onlick监听该区域的点击事件,则不会返回任何结果。 
首先我们需要获取iframe所属的document对象:

document.getElementById('my-iframe').contentDocument

随后对这个document对象注册事件处理程序,监听响应鼠标点击事件:

document.getElementById('my-iframe').contentDocument.onclick = function () {
    var sidebar = document.getElementById('sidebar');
    if (sidebar.style.display == 'block')  sidebar.style.display = 'none';
};

但是这样做还不能满足要求,因为iframe中内容会单独加载,如果我们在它的DOM解析完成之前就去获取document对象并绑定事件监听程序,将不会有任何效果。 
所以我们需要先监听iframe页面加载完成事件,在处理程序中获取文档对象:

var iframe = document.getElementById('my-iframe');
iframe.onload = function() {
    iframe.contentDocument.onclick = function () {
        var sidebar = document.getElementById('sidebar');
        if (sidebar.style.display == 'block')  sidebar.style.display = 'none';
    };
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值