在Iframe中选择元素分割
Select Div of Element in Iframe
我在同一个域上有两个页面。Home.html和page2.html是它们的名字。
home.html具有以下内容
<html>
<iframe id="one" src="page2.html" style="display:none"></iframe>
<div id="container">
<h1>Title of Page</h1>
<div id="ShowHere"></div>
</div>
</html>
page2.html具有以下内容。
<html>
<div id="container">
<span id="target">Some Text</span>
</div>
<span>Don't Show This Text</span>
</html>
我想使用一些javascript从home.html页面上Id="one"的iframe中获取"target"的内容,然后更改元素Id=ShowHere的innerhtml以显示元素"target"中的html,从而在单词"Title of page"下显示单词"some Text"。
我认为以下是一个开始,放在home.html的底部:
<script>
var frameSource = document.getElementById("one").contentWindow.document.documentElement.outerHTML;
// ANSWER TO MY QUESTION
document.getElementById("ShowHere").innerHTML = frameSource;
</script>
我四处搜索,发现了一些应该这样做的答案,但没有一个能对如何做到这一点提供有意义的解释,也没有一个我能开始工作。我更喜欢使用普通的javascript,但Jquery也可以。
基于我正在尝试做的事情,即从同一域的另一个页面获取div的内容(即innerhtml),我想知道是否有比创建一个不可见的iframe然后阅读它更好的方法。通过另一种机制获得所需结果的答案也是受欢迎的。
使用此问题的答案
因此,首先你必须找到iframe:
var iframe = document.getElementById('one');
然后你应该得到iframe的内容:
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
现在您可以使用getElementById
在iframe:中查找DOM元素
var iframeContent;
if (iframeDocument) {
iframeContent = iframeDocument.getElementById('target').innerHTML;
}
现在,在iframeContent中,您有需要在主页上显示的span的内容,因此您只需找到要显示iframeContent的元素,并设置innerHTML属性:
var divToShow = document.getElementById('ShowHere');
divToShow.innerHTML = iframeContent;
仅此而已
我希望我的回答能帮助你解决问题
感谢:)
您可以在iframe中使用选择器(如getElementById
等),类似于通过iframe.contentWindow.document
在正常窗口中找到的选择器。
因此,如果你想在第二页上获得target
的内容,你可以通过document.getElementById("one").contentWindow.document.getElementById("target")
获得
编辑:
您可能还应该等到iframe加载后再尝试从中读取元素
var init = function(){
var frameDocument = document.getElementById("one").contentWindow.document;
document.getElementById("ShowHere").innerHTML = frameDocument.getElementById("target").innerHTML;
};
if(document.getElementById("one").contentWindow.document.getElementById("target")) { // iframe is loaded
init();
} else {
document.getElementById("one").contentWindow.onload = init;
}
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 将HTML5画布(视频)元素分割成若干块
- 在Iframe中选择元素分割
- 如何在两个元素之间分割剩余高度
- 固定位置分割防止焦点在元素之间移动时滚动
- javascript由空白3个元素分割
- 单击时分割元素仅为第一个元素激发
- 当字符串中只有一个元素时,如何在jQuery中将字符串分割成数组
- 通过简单的脚本从元素中分割特定的文本
- 按十进制分割数字并返回2个单独的元素
- 如何使用jQuery获得由分隔符分割的多个元素的文本
- flexbox中可拖动的分割窗格窗口不能越过子元素
- 如何分割动态列表取决于Jquery的许多元素