是否可以在页面上最后加载javascript广告以防止加载时间过慢?

时间:2009-01-18 02:38:40

标签: javascript

有没有办法在页面上最后添加一个加载javascript的广告,但是它是否在内容中定位?主要目的是防止javascript广告减慢页面加载速度,因此如果有其他方法可以实现此目的,请分享。

3 个答案:

答案 0 :(得分:10)

defer attribute 可以放在脚本块上以推迟执行,直到页面完成加载。

<script src="myscript.js" type="text/javascript" defer>
// blah blah
</script>

我不确定有关使用此属性的一般建议。

编辑:正如@David指出的那样,使用defer="defer"表示XHTML

您始终可以将代码放在 window.onload 事件中,以便在页面加载后执行

window.onload = function () {
    // ad codes here

};

但后面的方法可能会带来一些问题,你可能想先测试一下。

有关撰写着名this blog post的人Dean Edwards的javascript packer的更多信息。


编辑:如果广告代码本身的大小是问题,您可以通过将上述方法与脚本注入document.write结合起来,始终推迟加载:

function loadScript(src) {
    document.write('<script src="' + src + '" type="text/javascript"></script>');
}

因此生成的代码可能如下所示:

<script type="text/javascript" defer>

function loadScript(src) {
    document.write('<script src="' + src + '" type="text/javascript"></script>');
}

loadScript('http://ads.example.com/advertisements.js');

</script>

但正如我所说,这取决于您获得的具体广告代码。由于位置document.write将写入的东西可能不是您想要的位置。可能需要进行一些修改。

答案 1 :(得分:1)

function addLoadEvent(func) {
      var oldonload = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = func;
      } else {
        window.onload = function() {
          oldonload();
          func();
        }
      }
    }

上面的代码是添加新的onload事件的好方法,它不会干扰您现有的javascript。然后,您可以使用以下代码添加新的加载事件以加载广告。

addLoadEvent(function() { // call to loadScript() here });

答案 2 :(得分:0)

我通常会在body标记结束之前将标记加载到脚本中。 因此它会在页面末尾加载。 这不会给出任何验证错误或无论如何。