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

时间:2012-04-02 17:48:52

标签: jquery-mobile adsense

我一直在阅读web并尝试了几天寻找通过jQuery移动过渡展示Google Adsense广告的方法而不会破坏ToS。我有点陷入困境,所以我转向最聪明的社区。

Adsense标签由三个脚本组成(i)一般脚本,(ii)插槽列表和(iii)显示器本身。前两个进入<head>,后者进入<body>

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

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

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

2 个答案:

答案 0 :(得分:6)

我找到了一种方法,可以在Google DFP广告管理系统中使用Adsense将其投放到DFP广告管理系统中。 DFP更灵活,因此更容易。

以下是我使用的内容:

  • <head>中:我放置了Google脚本,并为整个网站定义了所有广告位(您将使用“生成标记”获取)。
  • 在每个页面上:您将脚本的<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();})

每次回到页面时,都会刷新插槽,每次进入新页面时,都会创建一个新插槽(前提是它已在<head>中定义)。

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

答案 1 :(得分:0)

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