【问题标题】:Check if iframe page has content using JavaScript or jQuery检查 iframe 页面是否包含使用 JavaScript 或 jQuery 的内容
【发布时间】:2013-08-26 05:15:05
【问题描述】:

我正在动态创建一个从页面中提取内容的 iframe 标记,如何在显示之前检查我从中提取的页面是否有内容?我应该在生成 iframe 标记之前先检查内容吗?

如何检查 iframe 页面是否为“<html><body></body></html>”,因此不显示“adContainer”?

这是我迄今为止编写的一些代码......

function setAttributes(el, attrs) {
  for(var key in attrs) {
    el.setAttribute(key, attrs[key]);
  }
}

// set ad iframe
function setAdiFrame(iWidth, iHeight, bookname) {
  var randNum = Math.floor(Math.random()*1000000000);
  var adFrame = document.createElement('IFRAME');
  setAttributes(adFrame, {
    "src": "http://www.foo.com/" + bookname + "/;cat=" + bookname + ";sz=" + iWidth + "x" + iHeight + ";ord=" + randNum,
    "height": iHeight,
    "width": iWidth,
    "border": "0",
    "scrolling": "no",
    "allowtransparency": "true"
  });
  $('.ad').append(adFrame);
}

// ad container
var adContainer = $('.ad-container');
// check if ad container exist
if(adContainer.length > 0) {
  // check if it's mobile
  if(categorizr.isMobile) {
    setAdiFrame(300, 400, 'bookname');
  // otherwise, show desktop ad
  } else {
    setAdiFrame(728, 660, 'bookname');
  }
  // show ad once iframe page is loaded
  adContainer.find('iframe').on('load', function() {
    adContainer.css('display', 'block');
  });
}

adContainer 的输出标记就是这样。

<div class="ad-container" style="display: block;">
    <div class="ad">
        <a id="close" href="button:close"></a>
            <iframe src="http://www.foo.com;bookname/;cat=bookname;sz=728x660;ord=849890967" height="660" width="728" border="0" scrolling="no" allowtransparency="true"></iframe>
    </div>
</div>

IFrame 页面的 src 中输出的 html 可能是“&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;”。如果是这样,我不想显示 adContainer。

【问题讨论】:

标签: javascript jquery html css iframe


【解决方案1】:
if(adFrame.contents().find("body").html()=="") {
    adContainer.css('display', 'none');
}

【讨论】:

  • 我的 iframe 页面将返回 '' 而不是空白,我该如何检查它而不是空白?
  • 上述条件不起作用?试试adContainer.contents()=='&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;' 然后
  • 尝试提醒adContainer.contents()无论它显示什么,匹配它!
  • 我已经更新了我的问题,也许这可能有助于更好地理解我遇到的问题。
  • 我写的是adContainer而不是adFrame,将其更改为adFrame.contents().find("body")这将返回一个主体对象,您可以在控制台中检查它或通过警告它。获取后,您可以检查 body 标签内是否有任何内容
猜你喜欢
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2011-07-15
  • 2019-07-14
  • 2013-06-10
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
相关资源
最近更新 更多