怎么获取iframe里的html节点,javascript – 如何获取iframe元素的innerHTML内容

要获取iframe内的按钮,这可能有效:

var iframe = document.getElementById("frame1");

var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

var button = iframeDocument.getElementById("mybutton");

显然,您可以使用iframeDocument导航以获得所需内容,并使用您似乎知道的.innerHTML.如果iframe指向其父级以外的域,则无法获取iframe的内容.

更新:

您需要使用代码在准备好后获取框架的文档及其内容,因此您应该使用以下内容:

window.onload = function () {

var greeting = "hola, ";

var div1 = document.createElement("div");

var frame1 = document.createElement("iframe");

frame1.id = "frame1";

frame1.onload = function () {

alert("loaded");

var iframe = document.getElementById("frame1");

var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

var button = iframeDocument.getElementById("mybutton");

if (button == null) {

alert("button is null");

}

};

frame1.src = "http://onemoredemo.appspot.com";

div1.appendChild(frame1);

document.body.appendChild(div1);

};

重要的是如何创建元素并将其附加到DOM – 而不仅仅是使用innerHTML. iframe的onload方法是为了保证它已准备就绪.实际的操作代码在jsFiddle中不起作用,因为跨域问题,但是你应该需要的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 UniApp 中,通过 `<iframe>` 的 `src` 属性加载页面时,由于跨域安全限制,无法直接获取 `<iframe>` 内部的 HTML 内容。但可以通过使用 `postMessage` 方法,在父页面和 `<iframe>` 之间进行通信,从而获取 `<iframe>` 内部的 HTML 内容。 以下是一个示例代码: 在父页面中: ```vue <template> <view> <iframe ref="myIframe" src="https://www.example.com"></iframe> <button @click="getIframeHtml">获取 iframe 内部 HTML</button> </view> </template> <script> export default { methods: { getIframeHtml() { const iframeNode = this.$refs.myIframe; // 向 iframe 发送消息请求获取 HTML 内容 iframeNode.contentWindow.postMessage('getHtml', '*'); }, handleMessage(event) { if (event.source === this.$refs.myIframe.contentWindow) { // 判断消息类型是否为 HTML 内容 if (event.data.type === 'html') { // 在控制台打印 iframe 内部的 HTML 内容 console.log(event.data.html); } } } }, mounted() { window.addEventListener('message', this.handleMessage); }, 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.addEventListener('message', function(event) { // 判断收到的消息类型是否为获取 HTML 内容的请求 if (event.data === 'getHtml') { // 向父页面发送消息,传递 HTML 内容 window.parent.postMessage({ type: 'html', html: document.documentElement.innerHTML }, '*'); } }); </script> </body> </html> ``` 在上述示例代码中,父页面中的 `<iframe>` 加载了一个子页面。当点击按钮时,父页面调用 `getIframeHtml` 方法,向 `<iframe>` 发送一个消息请求获取 HTML 内容。 在子页面中,监听来自父页面的消息,并判断收到的消息类型是否为获取 HTML 内容的请求。如果是,则通过 `document.documentElement.innerHTML` 获取整个 HTML 内容,并使用 `window.parent.postMessage` 向父页面发送消息,传递 HTML 内容。 在父页面中,我们通过监听消息的方式,在 `handleMessage` 方法中判断消息来源是否是 `<iframe>`,并判断消息类型是否为 HTML 内容。如果是,则印出 `<iframe>` 内部的 HTML 内容。 通过以上代码,你可以在父页面中通过发送和接收消息的方式,获取到 `<iframe>` 内部的 HTML 内容。 请注意,为了确保安全性,需要在消息传递时进行恰当的验证和过滤。 以上是在 UniApp 中通过 `<iframe>` 的 `src` 属性渲染页面,并获取 `<iframe>` 内部的 HTML 内容的示例代码。根据你的实际需求和项目结构进行相应的修改和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值