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

bri*_*itg 13 javascript

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

cha*_*rit 10

您可以在脚本块上放置一个defer属性来推迟执行,直到页面完成加载.

<script src="myscript.js" type="text/javascript" defer>
// blah blah
</script>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

};
Run Code Online (Sandbox Code Playgroud)

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

有关撰写着名javascript打包器的人Dean Edwards撰写此博客文章的更多信息.


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

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

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

<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>
Run Code Online (Sandbox Code Playgroud)

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