uniapp iframe 通过 src='xx' 方式渲染 获取 iframe 里面节点 代码
时间: 2024-04-24 17:27:09 浏览: 108
javascript控制frame,iframe的src属性代码
在 UniApp 中,通过 `<iframe>` 的 `src` 属性来加载页面时,由于跨域安全限制,无法直接访问和操作 `<iframe>` 内部的节点。但可以通过使用 `postMessage` 方法在父页面和 `<iframe>` 之间进行通信,从而获取 `<iframe>` 内部节点的信息。
以下是一个示例代码:
在父页面中:
```vue
<template>
<view>
<iframe ref="myIframe" src="https://www.example.com"></iframe>
</view>
</template>
<script>
export default {
mounted() {
// 监听来自 iframe 的消息
window.addEventListener('message', this.handleMessage);
},
methods: {
handleMessage(event) {
// 判断消息来源是否是 iframe
if (event.source === this.$refs.myIframe.contentWindow) {
// 在控制台打印 iframe 内部节点
console.log(event.data);
}
}
},
beforeDestroy() {
// 移除消息监听
window.removeEventListener('message', this.handleMessage);
}
}
</script>
```
在 `<iframe>` 的页面中:
```html
<!DOCTYPE html>
<html>
<head>
<title>Child Page</title>
</head>
<body>
<h1>Hello from Child Page</h1>
<script>
// 向父页面发送消息,传递节点信息
window.parent.postMessage(document.body.innerHTML, '*');
</script>
</body>
</html>
```
在上述示例代码中,父页面中的 `<iframe>` 加载了一个子页面,当子页面加载完成后,它会向父页面发送一个消息,消息内容为 `<iframe>` 内部节点的信息。
在父页面中,我们使用 `window.addEventListener` 来监听来自 `<iframe>` 的消息。在 `handleMessage` 方法中,我们判断消息来源是否是 `<iframe>`,如果是,则表示收到了来自 `<iframe>` 的消息。我们可以在控制台打印出 `<iframe>` 内部节点的信息。
通过以上代码,你可以在父页面中通过监听消息的方式,获取到 `<iframe>` 内部的节点信息。
请注意,上述代码中使用了 `window.addEventListener` 和 `window.removeEventListener` 方法来添加和移除消息的监听器,确保在不需要监听消息时及时移除监听器,以避免内存泄漏。
以上是在 UniApp 中通过 `<iframe>` 的 `src` 属性渲染页面,并获取 `<iframe>` 内部节点的示例代码。根据你的实际需求和项目结构进行相应的修改和使用。
阅读全文