2

我是 jQuery 新手,遇到了一些麻烦。A 有一个iframe在页面加载后插入的页面。我需要在内容中找到锚链接iframe并将它们href与 URL 进行比较。仅仅尝试纯 JavaScriptgetElementById()是行不通的,因为它iframe是在加载后插入的。我读到我应该使用 jQuery 的live()delegate()on(),但我不确定它们是如何工作的。此外,如果有一个纯 Javascript 解决方案也会很棒。

iframe我需要解析的是:

<iframe src="http://assets.tumblr.com/iframe.html?10&src=http%3A%2F%2Fstaff.tumblr.com%2F&amp;lang=en_US&amp;name=staff"
    scrolling="no" width="330" height="25" frameborder="0" 
    style="position:absolute; z-index:1337; top:0px; right:0px; 
           border:0px; background-color:transparent; overflow:hidden;" 
           id="tumblr_controls">
</iframe>

它被附加到每个 Tumblr 博客(请参阅Tumblr 员工博客)。

我感兴趣的 iframe 内容部分如下所示:

<div style="position:absolute; top:3px; right:3px; white-space:nowrap; height:20px;">
    <form action="/follow" method="post" style="display:block; float:left;" onsubmit="_gaq.push(['_trackEvent', 'Iframe', 'Follow', 'staff');">
    <input type="hidden" name="form_key" value="8W0r1XnbOEtpTF0q8oe96BmGMJg"/>
    <input type="hidden" name="id" value="staff"/>
    <input type="image" src="http://assets.tumblr.com/images/iframe_follow_alpha.png 1018" style="width:58px; height:20px; border-width:0px; display:block; margin-left:3px; cursor:pointer;" alt="Follow"/>
    </form>
    <a target="_top" href="http://www.tumblr.com/dashboard">
    <img src="http://assets.tumblr.com/images/iframe_dashboard_alpha.png?1018" alt="Dashboard" style="height:20px; width:81px; border-width:0px; display:block; float:left; cursor:pointer;"/>
</a>

我需要比较此内容中所有可能的锚链接,并将它们的 href 与 URL 进行比较。

4

3 回答 3

4
function getHref() {

  var src = false,
      iframe = $('iframe#tumblr_controls');  // keep reference of iframe;
  // check that iframe loaded
  if( iframe.length) { 
     src = iframe.find('a[target=_top]').attr('href');
  }
}

现在您可以调用getHref()以获取hrefiframe 中的 of 链接并将其用于比较。

您也可以尝试如下:

$('iframe#tumblr_controls').load(function() {
   var href = $(this).find('a[target=_top]').attr('href');
});

如果您a的内容中有多个标签,请尝试:

function compareHrefs() {
  var iframe = $('iframe#tumblr_controls');  // keep reference of iframe;
  // check that iframe loaded
  if( iframe.length) { 
     // looping over each  tag
     iframe.find('a').each(function() {
          if ( this.href == TARGET_URL ) {
             // do something
          }
     });
  }
}
于 2012-07-26T04:37:13.380 回答
0

插入 iframe 后,您可以像在 jquery 中一样从其 id 获取 iframe

$('#tumblr_controls')

并获取源网址只需使用attrjquery 之类的

var source = $('#tumblr_controls').attr('src');

jsfiddle.net上的工作演示

于 2012-07-26T04:43:17.993 回答
0

你的 iframe 是另一个文件,所以你应该这样对待它......

$(document).ready(function(){
  $("#iframe).load(function(){
   //do stuff
  })
});
于 2012-07-26T04:44:12.450 回答