您可以从同一站点定位 iFrame 中的元素吗?

Posted

技术标签:

【中文标题】您可以从同一站点定位 iFrame 中的元素吗?【英文标题】:Can you target an element in an iFrame from the same site? 【发布时间】:2021-12-22 08:36:41 【问题描述】:

我要做的是在页面上的 iframe 中打开 minicart url,这样我就可以从购物车中获取购物车总数。我已经能够做到这一点,但是当我尝试定位 iframe 上的内容时,我无法做到这一点。在站点上,当我 console.log “pre”时,我确实看到在 html 集合中,innerHTML 确实显示了输出的内容。知道如何或是否能够针对此目标吗?

var iframevar = document.getElementById('freeGiftiFrame');
var elmnt = iframevar.contentWindow.document.getElementsByTagName("pre");
console.log(elmnt)
<iframe id="freeGiftiFrame" class="cartPopout" name="iframe_a"  >
  <html>
  <head></head>
    <body>
      <pre style="word-wrap: break-word; white-space: pre-wrap;">
      "miniCartCount": 1, "miniCartPrice": "€&nbsp;30,00"
      </pre>
    </body>
  </html>
</iframe>

【问题讨论】:

你不能像这样定义 iframe 内容; &lt;iframe&gt;tag 的子节点在历史上是您放置“您的浏览器不支持 iframe”文本的位置。相反,您要么需要使用指向 URL 的 src 属性,要么需要使用包含子页面 HTML 的 srcdoc 属性。 这能回答你的问题吗? scope issue with iframe 已经在这里回答:***.com/questions/69170585/scope-issue-with-iframe/…你需要使用Window.postMessage 嗨@DanielBeck 抱歉应该更清楚,我所展示的只是 iframe 在页面本身上的显示方式。它已使用指向 url 页面的 src 插入。只是不知道如何展示我想要做的事情。 @MisterJojo 谢谢你会看一下,我想做的是获取 pre 中的 innerHTML。我可以定位这个元素来隐藏它,例如但无法获取内部内容。 【参考方案1】:

对于任何有问题的人来说,添加 = sandbox="allow-same-origin allow-scripts" 对我有用

【讨论】:

以上是关于您可以从同一站点定位 iFrame 中的元素吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何定位另一个 iFrame 中的 iFrame 中的元素?

如何防止 iFrame 中的 JavaScript 访问外部站点的属性,即使 iFrame 的内容来自同一来源?

selenium 中在 iframe 内的元素定位

java selenium (十四) 处理Iframe 中的元素

<iframe>内的内容可以控制吗?

selenium自动化测试入门 定位frame和iframe中的元素对象