Javascript 延迟加载使用document.write的双击广告的最佳方法是什么?

Javascript 延迟加载使用document.write的双击广告的最佳方法是什么?,javascript,iframe,ads,document.write,lazy-loading,Javascript,Iframe,Ads,Document.write,Lazy Loading,通过双击请求的广告通常从广告提供商网络获得服务,该网络返回javascript,然后执行document.write以在页面中放置广告。使用document.write要求打开文档,这意味着页面尚未到达document.complete。这会妨碍延迟或延迟加载广告内容。将这样的代码放在页面底部是有帮助的,但这不足以减少非常重要的“页面加载”时间。“友好的iFrame”是我们最好的吗?是否有其他替代方法,例如覆盖document.write的聪明方法,可以在dom中保留适当的位置 第三方广告使用d

通过双击请求的广告通常从广告提供商网络获得服务,该网络返回javascript,然后执行document.write以在页面中放置广告。使用document.write要求打开文档,这意味着页面尚未到达document.complete。这会妨碍延迟或延迟加载广告内容。将这样的代码放在页面底部是有帮助的,但这不足以减少非常重要的“页面加载”时间。“友好的iFrame”是我们最好的吗?是否有其他替代方法,例如覆盖document.write的聪明方法,可以在dom中保留适当的位置


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

除非您提供富媒体广告,否则iframe方法可以正常工作。这些广告通常是基于flash的,在某些情况下,会扩展到其容器之外。如果使用iframe,富媒体广告仅限于容器(iframe)


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

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

  • 使用Javascript包含和一些变量
  • 使用放置在页面上的iFrame
  • 老实说,Javascript通常只呈现一个iFrame。广告网络需要iFrame b/c,它使他们能够轻松删除cookie(该用户在网络上的其他地方看到过该广告),并且可以轻松删除印象像素(计算呈现页面的方法)

    这是你最好的选择

  • 找出正在呈现的iFrame URL。如果你问得好,一些网络会直接告诉你
  • 将iFrame以适当的大小(例如728x90)放置在画布/html上,但将其指向域上的已知URL,该URL为空。(或具有与页面匹配的背景色)
  • 添加javascript,在适当的时间更新iFrame的SRC
  • iframe.src='myurl';iframe.reload()

    这就是你需要做的全部。设置它,以便加载其他所有内容,然后最后加载广告iFrame

    请注意,这可能会影响你从广告中获得的收入。这取决于用户体验,但如果直到用户将广告从屏幕上滚动下来后才加载广告,那么你将无法获得点击或赚钱


    此外,还要注意广告网络的性能。我知道它有很好的响应时间,但是有很多广告网络,有时甚至大人物的响应时间也很糟糕。

    我将为您提供另一个解决方案,而不使用iframe。看


    它将帮助您延迟文档。write()

    我习惯于将页面底部的广告呈现在隐藏的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>
    
    
    文件。填写(“”);
    //你的双击代码
    文件。填写(“”);
    $(“#srcid”)。附录(“#destid”);
    
    因此,似乎有一种围绕此形成的标准,称为友好iFrame(FIF)。这感觉有点像黑客,但我觉得更好的是IAB在背后

    以下是IAB提供的文件:


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

    krux的postscribe.js,如HTML5开发会议所示


    https://npmjs.org/package/postscribe我用iframe解决了这个问题。我将脚本标记替换为一个iframe,该iframe指向服务器上包含脚本标记的简单页面

    我换了标签

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

    
    
    adpage.htm仅包含:

    <html><head></head>
    <body style="margin:0px;">
    <script src="ad provider's url containing document.write()" type="text/javascript">
    </script>
    </body></html>
    
    
    
    使用iFrame的缺点是什么?他们不会伤害你;他们是你被误解的朋友。你有没有试图改写文档。写?工作正常。iFrAMS是方便的,我认为他们是我的朋友:)但是他们会有一个性能惩罚。然而,这是一个很好的折衷方案,可以获得延迟加载,并避免阻止基页下载。Chrome有一个标签,将来可能会取代它,但现在,它是iframes。使用iframe的一个缺点是iframe会阻止父页面onload事件。所以,我得到了并行下载,但是高延迟的广告请求会妨碍基页加载性能。我也这样做。对我来说效果很好,当他们决定不想快速响应时,可以保持页面加载顺畅。这听起来不太符合要求。很确定隐藏和移动广告是违反双击策略的。你还在使用这种方法吗?还有,如何在头部添加iframe标记?我在问,因为谷歌广告脚本被要求添加在头标签的末尾
    <html><head></head>
    <body style="margin:0px;">
    <script src="ad provider's url containing document.write()" type="text/javascript">
    </script>
    </body></html>