2017-02-23 44 views
0

我正在尝试编写一个脚本来为我的iframe元素提供动态标题,而不是硬编码title属性。所以我想抓取iframe的src并加载该对象,然后获取该对象的标题元素。我尝试使用iframe.contentDocument,但我得到了跨域安全错误。如何获取加载的iframe标题元素?

+0

试试这个http://stackoverflow.com/a/1570900/4965214 –

回答

0

正如消息所述,出于安全原因(如此),您无法访问其他域的内容。解决这个问题的一个方法是使用ajax加载iframe的站点,并从响应中读取标题。 由于标题标签不是文档的一部分(=正文),因此无法使用$('title', dom)dom.find('title')。但是你可以像下面的例子那样检索它。

<!DOCTYPE html> 
    <html> 
     <head> 
      <title></title> 
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
      <style type="text/css"> 
      </style> 
      <script type="text/javascript"> 
      $(function(){ 
       var url = $('iframe').prop('src'); 
       $.get(url) 
        .done(function(html){ 
         var dom = $(html); 
         var title = dom 
          .filter(function(i,d){ 
           return d.tagName == 'TITLE'; 
          }) 
          .text(); 
         $('h1 span').text(title); 
        }) 
       ; 
      }); 
      </script> 
     </head> 
     <body> 
      <h1>Title: <span></span></h1> 
      <iframe src="http://www.golem.de" style="width: 800px; height: 600px;" /> 
     </body> 
    </html>