[英]load javascript after loading the page
我读了很多主题,尝试了很多东西,但我找不到想要的东西。 我只是在页面末尾移动了我的js代码,现在出现了一些错误。
这是我的页面的样子:
<html>
<head>
bla bla
</head>
<body>
bla bla
<div class="advertising">
<script type="text/javascript" defer="defer">
window.onload = adsense();
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<script language="javascript" type="text/javascript" src="fonctions.js"></script>
</body>
</html>
在fonctions.js中,我有我的Google adsense代码:
function adsense(){
<!--
google_ad_client = "pub-xxxxx";
/* 120x600, date de création 11/06/11 */
google_ad_slot = "xxxxx";
google_ad_width = 120;
google_ad_height = 600;
//-->
}
这个想法是只在一个地方有相同的adsense代码,但是在文件fonctions.js之后我无法加载它
我尝试了defer =“ defer”,window.onload ...
有任何想法吗? 谢谢
我在Firebug中收到此错误:错误:未定义adsense
PS:我想避免使用Jquery(以避免使页面太大)
更新:
<script type="text/javascript" defer="defer">
(function() { // 'sandbox' javascript pattern to prevent clobbering
// global namespace
var executeProxy = function() {
if (typeof adsense === 'function') { // adsense is configured
adsense();
} else { // adsense is not configured;
// therefore, try again later
setTimeout(executeProxy, 50);
}
};
executeProxy();
}());
</script>
<script language="javascript" type="text/javascript" src="fonctions.js"></script>
在fonctions.js中,如果我输入以下代码,则会显示“确定”:
function adsense(){
alert ("ok");
}
但是,如果有此代码,则不会显示广告:
function adsense(){
google_ad_client = "pub-xx";
/* 120x600, date de création 16/04/11 */
google_ad_slot = "xxx";
google_ad_width = 120;
google_ad_height = 600;
}
我的猜测是这是Google的问题...无法以这种方式加载代码...? 如果我将adsense代码放在页面中(在呼叫下方-您在哪里进行提醒('here'); ),则会很好地显示...因此我的adsense代码正确
更新:我终于改变了解决方案,我将代码放在.html文件中,并使用php将其包括在内。 所以现在不在我的js文件中。 还是要谢谢你的帮助。
window.onload
需要一个函数回调; 但是,您正在使用adsense()
执行adsense
,而adsense
不会返回函数; 因此, window.onload
会丢弃它。 改成:
window.onload = adsense;
UPDATE
上面的答案应该被丢弃,但是我将其保留,以便人们可以知道window.onload
需要一个函数回调:)
请记住,对script元素的defer
将指示浏览器等待页面加载后执行脚本; 但是,您的fonctions.js
位于最后一个script
标签的src
属性中; 因此,您的延后脚本很可能会在定义adsense
之前执行,因为浏览器会发出http请求来检索您的脚本。 在未定义adsense
情况下,这将允许延迟执行的脚本继续执行。 尝试使用此方法代替原始的延迟脚本:
<script type="text/javascript" defer="defer">
(function() { // 'sandbox' javascript pattern to prevent clobbering
// global namespace
var executeProxy = function() {
if (typeof adsense === 'function') { // adsense is configured
adsense();
} else { // adsense is not configured;
// therefore, try again later
setTimeout(executeProxy, 50);
}
};
executeProxy();
}());
</script>
UPDATE
我忘记了IE之外的任何功能均不支持脚本延迟。 因此,延期问题不应该在这里起作用。 但是,我在FF和Chrome中测试了以下代码,并且可以正常工作:
<script type="text/javascript" defer="defer">
(function() { // 'sandbox' javascript pattern to prevent clobbering
// global namespace
var executeProxy = function() {
if (typeof adsense === 'function') { // adsense is configured
adsense();
} else { // adsense is not configured;
// therefore, try again later
setTimeout(executeProxy, 50);
}
};
executeProxy();
}());
</script>
<script type="text/javascript">
function adsense() {
alert('here');
}
</script>
window.onload = adsense();
立即调用adsense()
并将其返回值分配给onload
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.