iframe里面触发外面事件
时间: 2023-07-11 09:55:20 浏览: 51
在默认情况下,iframe里面的事件不会触发外面的事件。但是可以通过在iframe里面嵌入脚本,使用postMessage()方法向外传递消息,从而实现与外面的交互。外面的页面可以监听message事件,接收从iframe里面传递过来的消息,并根据消息内容进行相应的处理。需要注意的是,为了防止跨站点脚本攻击,需要在接收消息时进行安全检查。
相关问题
iframe关闭时触发事件
当 iframe 被关闭时,可以通过使用 `unload` 事件来触发相应的事件处理程序。例如,可以使用以下代码来检测 iframe 是否被关闭:
```javascript
var iframe = document.getElementById('my-iframe');
iframe.onload = function() {
// iframe 加载完成后添加 unload 事件监听器
iframe.contentWindow.addEventListener('unload', function() {
// 在 iframe 关闭时执行的代码
console.log('iframe 已关闭');
});
};
```
在上面的代码中,首先获取了一个 id 为 `my-iframe` 的 iframe 元素,然后在 iframe 加载完成后添加了一个 `unload` 事件监听器。当 iframe 被关闭时,该事件监听器会触发并执行相应的代码,这里只是简单地打印了一条信息。
iframe显示隐藏触发事件
当 iframe 显示或隐藏时,可以通过使用 `visibilitychange` 或 `resize` 事件来触发相应的事件处理程序。
`visibilitychange` 事件会在浏览器标签页或窗口的可见性发生变化时触发,包括当用户最小化浏览器窗口或切换标签页时。可以使用以下代码来检测 iframe 是否显示或隐藏:
```javascript
var iframe = document.getElementById('my-iframe');
document.addEventListener('visibilitychange', function() {
if (document.hidden) {
// 当前页面不可见,iframe 隐藏
console.log('iframe 已隐藏');
} else {
// 当前页面可见,iframe 显示
console.log('iframe 已显示');
}
});
```
`resize` 事件会在浏览器窗口大小发生变化时触发,包括当用户调整浏览器窗口大小或旋转设备时。可以使用以下代码来检测 iframe 是否被调整大小:
```javascript
var iframe = document.getElementById('my-iframe');
window.addEventListener('resize', function() {
// 当浏览器窗口大小发生变化时执行的代码
console.log('iframe 已调整大小');
});
```
在上述代码中,我们分别使用 `visibilitychange` 和 `resize` 事件来检测 iframe 的显示和隐藏,以及调整大小。根据具体的需求,选择相应的事件即可。