9

通过双击请求的广告通常由广告提供商网络提供,该网络返回 javascript,然后执行 document.write 以在页面中放置广告。document.write 的使用要求文档是打开的,这意味着页面还没有到达 document.complete。这会妨碍延迟或延迟加载广告内容。将这样的代码放在页面底部是有帮助的,但不足以降低最重要的“页面加载”时间。“友好的 iframe”是我们拥有的最好的吗?是否有任何其他替代方法,例如覆盖 document.write 的巧妙方法,保留 dom 中的正确位置?

第三方广告使用 document.write 将脚本和内容添加到页面的“当前”位置。页面所有者无法控制广告脚本,也无法指定显示目标 div。广告脚本希望在调用它的文档位置写入和呈现,因此如何使用延迟动态脚本加载正确定位广告并不明显。将脚本延迟加载到上下文中很简单,但是通过 document.write 就地呈现的第三方内容并不那么容易实现。

4

8 回答 8

3

krux 的 postscribe.js,如 HTML5 开发者大会上所展示的。

http://krux.github.com/postscribe/doc/postscribe.html https://npmjs.org/package/postscribe

于 2012-10-24T01:35:22.603 回答
2

好的,所以基本上有两种主要的方式将广告呈现到屏幕上。

  1. 使用 Javascript 包含和一些变量。
  2. 使用放置在页面上的 iFrame。

老实说,Javascript 通常只呈现一个 iFrame。广告网络需要 iFrame b/c,它使他们能够轻松删除 cookie(此用户是否在网络的其他地方看到过此广告)并且很容易删除印象像素(计算该页面已呈现的方法)。

所以这是你最好的选择。

  1. 找出正在呈现的 iFrame URL。如果你问得好,一些网络会直接告诉你。
  2. 将 iFrame 以适当的大小(例如 728x90)放置在您的画布/html 上,但将其指向您域中空白的已知 URL。(或具有与您的页面相匹配的背景颜色)。
  3. 在适当的时候添加更新 iFrame 的 SRC 的 javascript。

iframe.src = 'myurl?'; iframe.reload();

这应该是您需要做的所有事情。设置它以便加载其他所有内容,然后最后加载广告 iFrame。

请注意,这可能会影响您从广告中获得的收入。这取决于用户体验,但如果广告在用户将其滚动离开屏幕后才加载,那么您将不会获得点击或赚钱。

此外,请密切关注广告网络的表现。我知道这些家伙的响应时间非常好,但是有很多广告网络,有时甚至大家伙的响应时间都很糟糕。

于 2011-01-13T19:14:41.957 回答
2

我会在不使用 iframe 的情况下为您提供另一种解决方案。见http://github.com/shenjunru/LazyWrite

它将帮助您推迟 document.write()

于 2011-02-17T08:49:21.180 回答
2

我习惯于在隐藏的 div 中呈现页面底部的广告并使用 javascript 移动它们。

像这样的东西,无论你想把你的广告:

<div id="destid" style="width:350px; heigh: 200px"></div>

并在页面末尾:

<div style="display:none">   
    <script type="text/javascript"> 
    document.write("<div id='srcid'>");
    //your doubleclickcode
    document.write("</div>");
    </script>
<script type="text/javascript"> 
    $("#srcid").appendTo("#destid");
</script>
</div>
于 2011-04-28T08:46:39.863 回答
1

除非您投放富媒体广告,否则 iframe 方法可以正常工作。这些是通常基于 Flash 的广告类型,在某些情况下,会从其容器中展开。如果您使用 iframe,则富媒体广告仅限于容器 (iframe)。

容纳所有可能的广告的最佳方式是使用脚本方法。

于 2011-01-13T18:45:23.760 回答
1

所以似乎有一个标准围绕这个形成,称为友好 iframe(FIF)。感觉有点像 hack,但 IAB 支持它让我感觉更好。

这是来自 IAB 的文档:http ://www.iab.net/media/file/rich_media_ajax_best_practices.pdf

它对我有用,即使您将 js 动态写入 iframe,它仍然允许富媒体广告扩展到其空间之外。

于 2012-02-16T00:35:05.043 回答
0

我用 iframe 解决了这个问题。我用 iframe 替换了 script 标签,该 iframe 指向我的服务器上包含 script 标签的简单页面。

我更换了标签

<script src="ad provider's url containing document.write()" type="text/javascript">
</script>

<iframe src="adpage.htm" style="border:none;width:...height:..."></iframe>

adpage.htm 只包含:

<html><head></head>
<body style="margin:0px;">
<script src="ad provider's url containing document.write()" type="text/javascript">
</script>
</body></html>
于 2015-03-13T16:16:24.900 回答
0

你是说用 Document.write 延迟加载广告那么这是将延迟加载器添加到 Head 的最佳方法

在 LazyHTML Wrapper 中使用 Document.write 包装广告

<div class="lazyhtml" data-lazyhtml>
  <script type="text/lazyhtml">
  <!--
  
Your Adcode with Document.write  (including wrapping <script>,<style> tags)
  
  -->
  </script>
</div>

更多信息:LazyHTML Github

于 2021-09-05T15:31:23.993 回答