有没有办法在页面上最后添加一个加载javascript的广告,但是它是否在内容中定位?主要目的是防止javascript广告减慢页面加载速度,因此如果有其他方法可以实现此目的,请分享。
答案 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标记结束之前将标记加载到脚本中。 因此它会在页面末尾加载。 这不会给出任何验证错误或无论如何。