3

按照https://developers.google.com/custom-search-ads/docs/implementation-guide上的文档,我创建了一些代码来检索搜索结果页面上的广告。

此代码假定您在网页上放置了一个容器

new google.ads.search.Ads(pageOptions, adblock1, adblock2);

向可能包含广告的 iFrame 添加一个 iFrame 。我说可能包含,因为有时 iFrame 保持为空。

问题:现在我需要知道天气容器中是否显示任何广告。我该怎么做呢?

  • 调用是异步的,所以我什么时候初始化检查?(谷歌参考没有注明回调函数)
  • 如何检查是否显示了广告。因为使用 Javascript 我无法查看 iFrame 内部。

欢迎任何建议!:)

问候,乔恩

4

3 回答 3

2

可能对您有帮助的回调函数是:

'noAdLoadedCallback':
  function(containerName, adsLoaded) {
      if (!adsLoaded) {
          try {
              ---- do something here ---
          }
          catch (e) {}
      }
  }

您可以将其放在每个广告块上。

干杯尼克

于 2013-10-22T07:40:34.340 回答
1

今天我遇到了同样的问题,根据@Niko Nik 的回复,对我有用的解决方案如下:

AppComponent.prototype.prepareAds = function (containerId, nOfAds, query) {
    var csa = window._googCsa || function () {};
    var self_1 = this;
    var pageOptions = {
        'pubId': this.gootleAdClient,
        'adtest': this.googleAdTest,
        'adLoadedCallback': function adLoadedCallback(containerName, adsLoaded) {
            self_1.adsLoaded[containerName] = adsLoaded;
        }
    };
    var adBlock = {
        'container': containerId,
        'width': '100%',
        'number': nOfAds
    };
    if (query) {
        pageOptions['query'] = query;
    }
    this.adsLoaded[containerId] = true;
    csa('ads', pageOptions, adBlock);
}

我发现它adLoadedCallback的优点是在有广告和没有广告时调用它(当没有广告时,adsLoaded参数为 true 时为 false)。

于 2015-12-14T22:28:31.060 回答
0

你总是可以添加一个 MutationObserver 并等待 iframe 被插入,然后检查它的高度。如果它的高度小于 30 像素,则它可能是空的。

我没有在 CSA 代码中看到任何回调,但我看到了两个未记录的广告块选项,clicktrackUrl以及linkTarget. 一个是点击广告时加载的跟踪像素的 url,另一个类似于 a 标签上的 target 属性。

于 2013-01-15T22:12:54.390 回答