2012-10-17 3 views
2

Следуя документам на https://developers.google.com/custom-search-ads/docs/implementation-guide, я создал код для извлечения объявлений на странице результатов поиска.функция обратного вызова для google.ads.search.Ads()

Этот код предполагает, что вы поместите контейнер на вашей веб-странице, где функция

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

присоединяет IFrame к этому может содержать объявления. Я говорю МОГУТ содержать, потому что иногда iFrames остаются пустыми.

Вопрос: Теперь мне нужно знать, что в контейнерах есть объявления, отображаемые в контейнерах. Как мне это сделать?

  • Звонок является синхронным, поэтому, когда я инициализирую чек? (ссылка google не учитывает функцию обратного вызова)
  • Как проверить, показано ли показанное объявление. Потому что с Javascript я не могу заглянуть внутрь iFrame.

Любые предложения приветствуются! :)

С уважением, Jorn

+0

Вы когда-нибудь находили решение для этого? У меня возникают проблемы с некоторыми моими объявлениями, и это действительно поможет мне справиться с ошибками. – MrGlass

ответ

0

Вы всегда можете добавить MutationObserver и ждать IFrame для вставки, а затем проверить его высоту. Если он меньше 30 пикселей, он, вероятно, пуст.

Я не видел обратных вызовов в коде CSA, но я видел два недокументированных варианта для рекламных блоков, clicktrackUrl и linkTarget. Один из них - это URL-адрес пикселя отслеживания, который загружается при нажатии на рекламу, а другой действует как атрибут target в теге.

2

функция обратного вызова, которая, возможно, поможет вам это:

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

Вы можете поставить это на каждом Adblock.

Приветствия Nik

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, когда есть ложные, когда нет).