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';
    };
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值