需要实现的页面逻辑是:
- 点击父窗体中按钮,显示侧边栏;
- 点击页面其他区域(iframe)可以隐藏侧边栏
先构造页面文档结构:
1 | <html> |
因为相对于父窗体,iframe 中加载的是一个相对独立的 document 文档,如果直接在父窗体中使用 iframe.onlick 监听该区域的点击事件,则不会返回任何结果。
首先我们需要获取 iframe 所属的 document 对象:
1 | document.getElementById('my-iframe').contentDocument |
随后对这个 document 对象注册事件处理程序,监听响应鼠标点击事件:
1 | document.getElementById('my-iframe').contentDocument.onclick = function () { |
但是这样做还不能满足要求,因为 iframe 中内容会单独加载,如果我们在它的 DOM 解析完成之前就去获取 document 对象并绑定事件监听程序,将不会有任何效果。
所以我们需要先监听 iframe 页面加载完成事件,在处理程序中获取文档对象:
1 | var iframe = document.getElementById('my-iframe'); |