iframe.onload里面无法获取iframeWin.document.getElementById('viewer')的高度
时间: 2023-11-13 15:49:10 浏览: 217
如果在 `iframe.onload` 中无法获取 `iframeWin.document.getElementById('viewer')` 的高度,可能是因为 iframe 内容页面的加载尚未完成。
你可以尝试使用 `setTimeout` 延迟一段时间,以确保 iframe 内容页面加载完成后再获取其高度。例如:
```javascript
// 父页面
mounted() {
const iframe = document.getElementById('my-iframe');
iframe.onload = () => {
setTimeout(() => {
const iframeWin = iframe.contentWindow;
const iframeDoc = iframeWin.document;
const viewer = iframeDoc.getElementById('viewer');
const height = viewer.offsetHeight;
console.log(height);
// 在这里获取到 iframe 内嵌页面的高度
}, 1000); // 延迟 1 秒钟后再执行获取高度的操作
};
},
```
这段代码在 `iframe.onload` 的回调函数中使用了 `setTimeout`,将获取高度的操作延迟了 1 秒钟。你可以根据实际情况调整延迟的时间,确保 iframe 内容页面加载完毕后再进行获取高度的操作。
请注意,使用延迟的方式并不是一种理想的解决方案,因为无法保证在所有情况下都能正确获取到 iframe 内容页面的高度。这是由于跨域限制和异步加载等因素造成的。如果可能,建议尝试其他解决方案或与提供 iframe 内嵌页面的网站进行合作来解决这个问题。
阅读全文