Turbolinks 5 и DoubleClick for Publisher (DFP) - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь найти решение для использования Google DFP с Turbolinks.

Я следую этому руководству

Совместимость с Turbolink DFP

НоЯ думаю, что это связано с более старой версией Turbolinks.

Я пытаюсь адаптировать слушатель событий: из исходной версии

class @Gpt
  constructor: ->
    @slots = {}
    window.googletag = googletag || {}
    window.googletag.cmd = googletag.cmd || []

    $(document).on 'page:fetch', => @clearAds()
    $(document).on 'page:load', => @evaluate()

    @evaluate()

  evaluate: ->
    for slot in $('.gpt-ad')
      $slot = $(slot)
      cachedSlot = @slots[$slot.data('gpt-div-id')]

      if cachedSlot? then @refreshSlot(cachedSlot) else @defineSlot($slot)

  defineSlot: ($slot) ->
    divId = $slot.data('gpt-div-id')
    path = $slot.data('gpt-path')
    dimensions = $slot.data('gpt-dimensions')

    googletag.cmd.push =>
      slot = googletag.defineSlot(path, dimensions, divId).addService(googletag.pubads())
      googletag.enableServices()
      googletag.display(divId)
      @slots[divId] = slot

  refreshSlot: (slot) ->
    googletag.cmd.push ->
      googletag.pubads().refresh([slot])

  clearAds: ->
    googletag.cmd.push ->
      googletag.pubads().clear()

Я изменяю конструктор на

$(document).on 'turbolinks:request-start', => @clearAds()
$(document).on 'turbolinks:load', => @evaluate()

Но разве это не работает:

googletag.defineSlot(path, dimensions, divId).addService(googletag.pubads())

верните мне ошибку

pubads_impl_246.js:1 Exception in queued GPT command TypeError: Cannot read property 'addService' of null

Кто-нибудь нашел решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...