【问题标题】:Load adsense ads through page transition with jQuery mobile使用 jQuery mobile 通过页面转换加载 adsense 广告
【发布时间】:2012-04-16 09:28:38
【问题描述】:

我一直在阅读web 并尝试了几天,寻找一种通过 jQuery 移动转换显示 Google Adsense 广告而不破坏 ToS 的方法。我有点卡住了,所以我求助于最聪明的社区。​​p>

Adsense 标记由三个脚本组成:(i) 通用脚本,(ii) 广告位列表和 (iii) 显示本身。前两个进入<head>,后一个进入<body>

我可以很好地在我的第一页上展示广告。问题来自页面转换。

由于 jQuery Mobile 不会重新加载 <head>,一个选项是在第一次加载 <head> 时准备 googletag。这将限制设置为每页最多三个广告,这在整个网站上并不多。另外,这意味着您将不得不移动广告<div>,这也不是很好。最后,这意味着您可以加载广告而不显示它们,直到用户转到它所属的页面(如果有的话)。哪一个也不那么兼容 ToS。

有没有办法在每次转换时加载新的广告?如果是,我应该将 Google 脚本放在哪里以确保它们正确加载?

【问题讨论】:

    标签: jquery-mobile adsense


    【解决方案1】:

    也许在这种情况下使用 jQuery 的 getScript() 方法会有所帮助。我建议您尝试将其包含在 pageinit 函数中。让我给你一个简单的例子。

    $(document).delegate('[data-role=page]','pageinit',function(){ // this would get executed on page init of every JQM page
        $.getScript('path/to/yourlib.js',function(){ // using getScript should help you be able to load scripts since the head doesn't get loaded again
           Demo(); //This would be code that your lib uses
        });
    });
    

    【讨论】:

    • 感谢您的重播。您的解决方案可以执行脚本,但插入 <script> 标记也可以正常工作。实际上我的问题来自对 Google ToS 的遵守。我关心的是是否允许将标题脚本放在页面正文中(是否被视为对脚本的修改?)以及是否允许重置 Google 变量。他们的文件在这件事上真的很模糊。
    【解决方案2】:

    我找到了一种方法让它在 Google DFP 中工作,并将 Adsense 插入 DFP。 DFP 更灵活,因此更容易。

    这是我使用的:

    • <head>:我放了谷歌脚本并定义了整个网站的所有广告位(你会得到它与“生成标签”)。
    • 在每一页上:您可以像在其他任何地方一样放置脚本的 <body> 部分。

    这样,您将能够在每次加载新页面时获得一个新广告。但是,如果您在页面之间浏览,您将永远无法刷新它们。

    为此,您可以使用googletag.pubads().refresh()。但是,您只想刷新正在加载的页面中的插槽,否则会违反某些条款和条件。另外,您不能refresh尚未显示的插槽,因此如果您为整个网站定义了插槽但尚未加载所有页面,则它会失败,这很有可能。

    但是您可以将当前页面中的插槽传递给refresh() 函数。这是我的做法:

    function refreshAds() {
      // Get all the slots
      var allSlots = googletag.pubads().getSlots();
      var slotsToRefresh = Array();
      // Select the slots that are on the current page based on their dom Id
      for (var i=0; i<allslots.length; ++i)
        if (isSlotIdOnTheCurrentPage(allSlots[i].getSlotId().getDomId())) 
          slotsToRefresh.push(allSlots[i]); // I let you implement the logic behind naming ids slots and divs
      if (slotsToRefresh.length > 0)
        googletag.pubads().refresh(slotsToRefresh);
    }
    
    $(document).on("pagechange", function() {refreshAds();})
    

    到这里,每次返回一个页面,槽位都会刷新,每次进入一个新页面,都会创建一个新槽位(前提是在&lt;head&gt;中定义)。

    我希望它会有所帮助!可能有一种方法可以让它在 Adsense 中无缝运行,但我没有尝试。

    【讨论】:

    • 所以您必须为网站上显示的每个广告定义一个唯一的广告位,对吧?一定是一个很小的网站?
    • 是的,它是一个 web 应用程序,所以很少有页面会被渲染很多次。刷新广告在这里可以挽救生命。
    • 这太棒了。以前我什至不知道 DFP。必须制作一些模组才能让它为我运行。 googletag.display 必须在调用 googletag.pubads().refresh 之前调用一次。
    • 任何人都可以申请 DFP 吗?
    • 我认为是这样,但验证帐户需要一段时间。它是面向发布商的 DFP(小型企业)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2019-04-20
    • 2013-03-04
    • 2011-06-24
    相关资源
    最近更新 更多