如何使用jsonp以异步方式将基于javascript的广告调用放到页面上

时间:2010-11-30 23:23:57

标签: javascript jquery asynchronous jsonp

我正在尝试使用jsonp来解决我一直遇到的页面性能问题。在我的网站上,我通常会通过写出像document.write("<scr" + "ipt src='advendor.com\myad.php'></scr" + "ipt>");这样的脚本标记来展示广告。这一切都很好,除了脚本标签指向的网站有一个非常慢的恶习。因此,当我有一个包含5个广告的网页时,由于阻止来自同步请求,它可能会占用我的整个网页加载时间。

所以我的想法是对广告服务进行jsonp调用,这将为我提供需要写入页面的脚本标记。问题是我在页面上得到了<script>标签,但脚本标签什么也没做。如果脚本是在document.ready之前编写的,那么脚本是否只能工作?

澄清: 目前,我们的服务器端代码正在调用广告投放系统,因此它确定了我从服务器端获取的广告代码(在此脚本标记中,“src =”指向供应商网站,生成实际广告和跟踪)。我要做的是阻止广告调用阻止加载我的内容。所以我首先要内容,然后是所有广告。将脚本标记放在页面底部是不可接受的解决方案,因为我需要确定广告在页面上的显示位置。 IE,<div id="adOneHere"><script src="vendorssite.com"></script></div>,我可以在一个页面上拥有多达五个这样的广告调用。每个都有自己的图像/跟踪/等...

我的问题类似于here解决的问题,除了我需要从多个域的集中式服务器获取“脚本”标记,我需要在特定的dom元素中执行document.write如果有帮助的话,我非常精通jQuery。

4 个答案:

答案 0 :(得分:0)

document.write()非常慢并且在运行时暂停HTML解析。您可以在DOM-ready上将广告插入DOM中。无需通过JSONP提取<script> - 标记。在结束</body> - 标记之前添加一个小脚本,将这些<script> - 标记添加到需要的页面。

答案 1 :(得分:0)

尝试在$(document).ready函数中使用jQuery的getScript,以便在显示其余页面后加载广告。

(我不知道这是否适用于那些广告脚本......)

答案 2 :(得分:0)

尝试并使用JQuery getScript内联,确切地说是document.write的位置。这是异步的,不需要与$(document).ready()。

一起使用
<script>$.getScript("advendor.com\myad.php");</script>

这里有详细的讨论: Can't append <script> element 其他实现此目的的方法以及JQuery在尝试其他方式时的行为。

答案 3 :(得分:0)

原来这就是我所需要的(link text)。如果您需要加载在页面加载事件之后加载和执行代码的脚本标记,那么这就是您的选择。