iframe中的代码在Windows加载时加载。但是,按钮点击后身体负荷的内容。 div
id="headers"
被隐藏,但在另一个链接上显示。
我想要的是在点击搜索按钮上访问并提醒一些ID 。
如何使用 Javascript 或 jQuery 实现此目标?
这是我的Html代码:
<html>
<head>
<title>TODO</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<body>
<div id="btn">
<button id="btn-search">Search</button>
</div>
<div class="iframebox">
<iframe id="messageiframe" srcdoc='
#document
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body class="full-height">
<div id="preview">
<ul id="list">
<li class="mail"><a href="https://mail.gmail.com">Gmail</a></li>
<li class="search"><a href="https://www.google.com">Google</a></li>
<li class="mail"><a href="https://mail.outlook.com">Outlook</a></li>
<li class="search"><a href="https://www.bing.com">Bing</a></li>
</ul>
</div>
<div id="all" style= "display: none;">
<div id="headers">
<font class="bold">Path</font>
"Some path"
<br>
<font class="bold">doc Id</font>
"Some Id"
<br>
<font class="bold">Recieved</font>
"Me"
</div>
</div>
</body>
</html>'>
</iframe>
</div>
</body>
</html>
这是我的Javascript代码不完整:
$('#btn-search').on('click', function() {
// slight delay
setTimeout(function(){
var links = [];
var iframe = document.getElementById('messageiframe');
iframe.contentWindow.onload = function(){
var innerDoc = iframe.contentWindow.document;
};
},100);
});
感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
这是你想要的? updated fiddle
$('#btn-search').on('click', function() {
// slight delay
a= $('#messageiframe').contents().find('#headers ').find('font:eq(1)')[0].nextSibling.nodeValue
alert(a)
setTimeout(function(){
var links = [];
var iframe = document.getElementById('messageiframe');
iframe.contentWindow.onload = function(){
var innerDoc = iframe.contentWindow.document;
};
},100);
});
答案 1 :(得分:1)
我在这里更新了你的小提琴:https://jsfiddle.net/qLrohftb/1/
我通过删除onload方法稍微修改了你的代码是不必要的。为了得到内部文档,我修改了你的代码来执行此操作:
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
然后,一旦获得了文档,您只需使用innerDoc.getElementById或innerDoc.getElementByClassName或您想要用来从iframe中检索值的任何方法。因此,在示例中,我获得了带有className mail的元素:
var element = innerDoc.getElementsByClassName("mail")[0];
然后,一旦我有元素,我就会显示警告对话框。