检查 iFrame 内容是否存在

Checking if iFrame content exists

我在 jQuery 中使用两个 if 语句,每个语句在元素主体内查找 iFrame 并相应地设置高度(如果它为空或有内容)。我正在使用它来检查 DFP 是否提供了广告或者它是否提供了空白。

我有以下内容:

$('.element-paragraph').each(function(index) {
    var characterCount = $(this).text().length
    totalCount = totalCount + characterCount

    if (totalCount > 1200)  {
        totalCount = 0;
        var feedData = "pos" + adUnit.toString();
        var advertInsert = '<div id=' + feedData +  ' class="inline-ad big-box-300x250 border-bottom-" data-mobile-display="" data-desktop-display="" data-ad-type="' + feedData + '" style=""></div>'
        var ad_script = '<script type="text/javascript">googletag.cmd.push(function() { googletag.display("' + feedData + '"); });</script>';
        $(this).append(advertInsert)
        $(this).append(ad_script);

        adUnit++;

        if ($("#" + feedData).contents().find("iframe").find("body").length > 0) {
            console.log("Advert found for unit" + feedData)
            $("#" + feedData).css("height","350");
        }

        else {
            console.log("Advert not found for unit" + feedData)
            $("#" + feedData).css("height","0");
        }
    }
});

内容嵌套如下:#id > iFrame > div > div > #document > html > body

它似乎没有正确检查 iFrame 中正文的长度。如果我删除 else 语句,它会正确调整高度,但会针对循环中运行的每个广告这样做,而不仅仅是它为其找到内容的广告。

您应该使用 .contents() 显示 iframe 文档。

$("#iframe_container").find("iframe").contents().find("body")

你的情况:

$("#" + feedData).find("iframe").contents().find("body").contents().length > 0

因为空 iframe 确实 有正文