vue项目中引用iframe,iframe内是网页,存在跨域情况,怎么获取iframe内容内嵌页面的高度,内嵌页面为外网页面,无法方法操作
时间: 2023-11-30 12:45:21 浏览: 106
如果你在 Vue 项目中引用的 iframe 内嵌页面是外网页面,并且存在跨域情况,无法进行方法操作的话,获取 iframe 内容页面的高度会有一定的限制。
由于浏览器的同源策略,跨域的限制会阻止你直接访问 iframe 内嵌页面的 DOM 结构,因此无法直接获取其高度。
不过,你可以尝试通过间接的方式来获取 iframe 内嵌页面的高度。一种方法是使用 MutationObserver 监听 iframe 内容页面内部 DOM 结构的变化,当内容页面的高度发生变化时,可以通过 MutationObserver 进行捕获并获取新的高度。
下面是一个示例代码:
```javascript
// 父页面
mounted() {
const iframe = document.getElementById('my-iframe');
// 创建 MutationObserver 实例
const observer = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'attributes' && mutation.attributeName === 'height') {
const height = mutation.target.getAttribute('height');
console.log(height);
// 在这里获取到 iframe 内嵌页面的高度
}
}
});
// 监听 iframe 内容页面内部 DOM 结构变化
observer.observe(iframe.contentDocument.documentElement, { attributes: true });
},
```
这段代码通过创建 MutationObserver 实例来监听 iframe 内容页面内部 DOM 结构的变化。当发生变化时,通过检查是否是 `height` 属性的变化来获取新的高度。
但需要注意的是,这种方法仅适用于一些特定的情况,且不能保证在所有浏览器和跨域情况下都有效。在某些情况下,由于跨域限制,你可能无法获取到 iframe 内嵌页面的实时高度。
阅读全文