Jquery mobile 使用jQuery mobile通过页面转换加载adsense广告

Jquery mobile 使用jQuery mobile通过页面转换加载adsense广告,jquery-mobile,adsense,Jquery Mobile,Adsense,几天来,我一直在阅读和尝试一些东西,寻找一种在不破坏ToS的情况下,通过jQuery移动转换显示Google Adsense广告的方法。我有点卡住了,所以我求助于最聪明的社区 Adsense标签由三个脚本组成(i)通用脚本,(ii)插槽列表和(iii)显示器本身。前两个在中,后一个在中 我可以在我的第一页上显示广告。问题来自页面转换 由于jQuery Mobile不会重新加载,因此可以选择在第一次加载时准备谷歌标签。这将限制为每页最多三个广告,这在整个网站上并不多。另外,这意味着你将不得不移动广

几天来,我一直在阅读和尝试一些东西,寻找一种在不破坏ToS的情况下,通过jQuery移动转换显示Google Adsense广告的方法。我有点卡住了,所以我求助于最聪明的社区

Adsense标签由三个脚本组成(i)通用脚本,(ii)插槽列表和(iii)显示器本身。前两个在
中,后一个在

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

由于jQuery Mobile不会重新加载
,因此可以选择在第一次加载
时准备
谷歌标签。这将限制为每页最多三个广告,这在整个网站上并不多。另外,这意味着你将不得不移动广告
,这也不是很好。最后,这意味着您可以加载广告,直到用户转到它所属的页面(如果有的话)才显示它们。这也不太兼容ToS


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

在这种情况下,使用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
    });
});

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

以下是我使用的:

  • 中:我放置了google脚本,并为整个网站定义了所有的Adslot(您将通过“生成标签”获得它)
  • 在每个页面上:您可以像在其他任何地方一样放置脚本的
    部分
有了这个,你将能够得到一个新的广告服务,每次你加载一个新的页面。但是,如果在页面之间浏览,则永远无法刷新它们

为此,您可以使用
googletag.pubads().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();})
函数refreshAds(){
//拿到所有的插槽
var allSlots=googletag.pubads().getSlots();
var slotsToRefresh=Array();
//根据其dom Id选择当前页面上的插槽
对于(变量i=0;i 0)
googletag.pubads().refresh(slotsToRefresh);
}
$(document).on(“pagechange”,function(){refreshAds();})
这样,每次返回页面时,插槽都会刷新,每次进入新页面时,都会创建一个新插槽(前提是它在
中定义)


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

感谢您的重播。您的解决方案可以执行脚本,但插入
标记也可以。实际上,我的问题来自于遵守谷歌ToS。我关心的是,是否允许将标题脚本放在页面主体中(是否被视为对脚本的修改?),以及是否允许重置Google变量。他们的文档在这个问题上是非常模糊的。所以你必须为网站上显示的每个广告定义一个唯一的adslot,对吗?一定是一个相当小的网站?是的,它是一个网络应用程序,所以很少有页面被渲染很多次。令人耳目一新的广告是这里的救命稻草。这太棒了。我以前甚至不知道DFP。为了让它为我运行,我做了一些修改。在调用googletag.pubads()之前,必须调用googletag.display一次。是否有人可以申请DFP?我想可以,但要验证帐户需要一段时间。这是双击出版商(小型企业)