react iframe 获取本地html高度
时间: 2023-08-18 14:09:28 浏览: 189
要获取 `iframe` 中本地 HTML 的高度,可以通过以下两种方法实现:
1. 使用 `window.postMessage` 方法
- 在 `iframe` 中添加 `window.addEventListener` 监听 `message` 事件
- 在父页面中使用 `window.postMessage` 发送消息给 `iframe`,并在 `message` 事件中获取 `iframe` 中的 HTML 高度
在 `iframe` 中添加监听方法:
```javascript
window.addEventListener('message', (event) => {
if (event.data.type === 'height') {
const height = event.data.height;
// do something with the height
}
});
```
在父页面中发送消息:
```javascript
const iframe = document.getElementById('myIframe');
iframe.contentWindow.postMessage({ type: 'getHeight' }, '*');
```
2. 使用 `contentWindow` 属性
- 获取 `iframe` 的 `contentWindow` 属性
- 使用 `contentWindow.document` 获取 `iframe` 中的 `document` 对象
- 使用 `document.documentElement.scrollHeight` 或 `document.body.scrollHeight` 属性获取 HTML 的高度
获取 `iframe` 中的 `document` 对象:
```javascript
const iframe = document.getElementById('myIframe');
const doc = iframe.contentWindow.document;
```
获取 HTML 的高度:
```javascript
const height = doc.documentElement.scrollHeight || doc.body.scrollHeight;
// do something with the height
```
其中,第二种方法的兼容性更好,但在某些情况下可能获取不到正确的高度。如果需要更精确地获取 HTML 的高度,建议使用第一种方法。
阅读全文