您可以从同一站点定位 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": "€ 30,00"
</pre>
</body>
</html>
</iframe>
【问题讨论】:
你不能像这样定义 iframe 内容;<iframe>
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 的内容来自同一来源?