【问题标题】:Is there a way to load doubleclick.net ad tags on document.ready?有没有办法在 document.ready 上加载 doubleclick.net 广告标签?
【发布时间】:2015-01-08 15:50:03
【问题描述】:

我尝试在document.ready 上加载doubleclick.net 广告代码,但广告没有显示。

HTML

<script language="JavaScript" type="text/javascript" data-ad-src="http://ad.ch.doubleclick.net/adj/swisswebcams/;lng=de;kw=home;tile=3;dcopt=ist;sz=160x600;ord=1874680027?"></script>

JavaScript(需要 jQuery)

$(document).ready(function(){
  $('script[data-ad-src]').each(function(){
    this.src = $(this).attr('data-ad-src');
    $(this).removeAttr('data-ad-src');
  });
});

脚本在生成的源代码中显示正确,但不再加载广告。脚本是否需要 document.ready 事件?有没有办法在 document.ready 之前加载这个脚本 - 或者再次触发 document.ready?

PS:我更喜欢使用“同步”标签而不是“异步”标签,因为“异步”正在创建一个 iFrame,当动态显示第 3 方网络时,它的宽度/高度不再灵活。

【问题讨论】:

  • 可能是,其他脚本正在使用document.write,这在document.ready 之后似乎不起作用 - 有什么解决方案吗?

标签: javascript jquery html google-dfp double-click-advertising


【解决方案1】:

试试这个

<script>
var wr = document.write, dchtml=[];
document.write=function(str) {
 // you may want to catch '<script' and add the src to the head when needed
 dchtml.push(str);
}
</script>
<script language="JavaScript" type="text/javascript" data-ad-src="http://ad.ch.doubleclick.net/adj/swisswebcams/;lng=de;kw=home;tile=3;dcopt=ist;sz=160x600;ord=1874680027?"></script>
<script>
$(function() { // assuming jQuery is loaded before this block
  $("#whereIWantMyAds").html(dchtml.join("\n"));
});
<script>

【讨论】:

  • 有趣的代码...你会如何处理同一页面上的两个广告?
  • 随便&lt;script&gt;var dchtml=[];&lt;/script&gt;&lt;script src...&gt;&lt;/script&gt;&lt;script&gt;$("#ad1").html(dchtml.join("\n")); dchtml=[];&lt;/script&gt;&lt;script src...&gt;&lt;/script&gt;&lt;script&gt;$("#ad2").html(dchtml.join("\n"));&lt;/script&gt;
  • 好的,这正是我的想法,但问题是,document.write 实际上编写了另一个脚本,该脚本还包含 document.write 等 - 我也有多个广告页面 - 可能还有其他使用 document.write 的外部脚本(有时)。
  • @mplungjan 所以最大的问题是,我怎样才能找到 document.write 的来源(在每种情况下)而不需要 gessing。有没有类似呼叫者来源的东西?另请参阅我的其他问题:stackoverflow.com/questions/27844304/…
  • 确实可以很好地处理两个广告,都使用 document.write,但是如果您有随机数量的广告,并且您根本不知道所有广告都会有 document.write,除了元素的索引之外,您必须想出另一种方法才能将代码放置在正确的位置...
【解决方案2】:

检查您的 JavaScript 错误。事实上,这很可能是异步下载脚本的问题:我敢肯定。这是来自双击的脚本(从您提供的链接下载:

document.write('\x3cdiv...

document.write 不起作用,因为 document.ready 已经关闭了文档 DOM。您特别需要将代码添加到 DOM 中的元素,而 document.write 无法做到这一点。为了完成这项工作,您必须联系 doubleclick 并让他们将每个 document.write 更改为将代码附加到页面元素的内容,或者在 iframe 中异步加载代码(包括脚本)。

【讨论】:

  • 或者按照我的建议重写document.write
  • @mplungjan... 并祈祷双击不会在其源代码中添加额外的脚本...
  • 当然 - 但也有可能捕捉到这一点。
  • 谢谢,我想你解决了这个问题。我找到了一个可能的解决方法,在文档准备好后“启用”document.write(如mplungjan 所建议的那样),但新问题似乎是找出在哪里附加html。请参阅我的另一个问题:stackoverflow.com/questions/27844304/…
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多