使用Javascript或jQuery在iframe中提醒隐藏文本

时间:2017-07-13 12:03:05

标签: javascript jquery html iframe

iframe中的代码在Windows加载时加载。但是,按钮点击后身体负荷的内容。 div id="headers"被隐藏,但在另一个链接上显示。

我想要的是在点击搜索按钮上访问并提醒一些ID

如何使用 Javascript jQuery 实现此目标?

JSFiddle

这是我的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);
});

感谢任何帮助。提前谢谢。

2 个答案:

答案 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];

然后,一旦我有元素,我就会显示警告对话框。