如何在页面加载后加载JavaScript-尝试了所有解决方案

如何在页面加载后加载JavaScript-尝试了所有解决方案,javascript,cakephp,Javascript,Cakephp,我的站点有问题-(使用CakePHP框架构建) 我想在页面加载完成后加载javascript(GooglePageSpeed Insights建议),所以我将整个javascript移到了页脚。然后,在做了一些测试之后,我发现JavaScript放在页脚上时不能正常工作——它有时会加载,但有时不会 我尝试了所有可能的解决方案-首先是: document.onload=function..,然后尝试:,然后尝试使用“async”函数异步加载javascript-Notting帮助。 到目前为止,我

我的站点有问题-(使用CakePHP框架构建) 我想在页面加载完成后加载javascript(GooglePageSpeed Insights建议),所以我将整个javascript移到了页脚。然后,在做了一些测试之后,我发现JavaScript放在页脚上时不能正常工作——它有时会加载,但有时不会

我尝试了所有可能的解决方案-首先是:
document.onload=function..
,然后尝试:
,然后尝试使用
“async”
函数异步加载javascript-Notting帮助。 到目前为止,我找不到一个办法使它起作用。您知道问题的原因以及如何解决它吗?

试试看

document.addEventListener('DOMContentLoaded', function(){
    // code here
});
显然在IE7中没有很好的方法来判断,但这里有一个黑客,发现了

if(document.all&&!window.opera){//IE的原始测试
//定义一个“空白”外部JavaScript标记
文件。写入(“”)
var contentloadtag=document.getElementById(“contentloadtag”)
contentloadtag.onreadystatechange=函数(){
if(this.readyState==“complete”)
//在这里做事
}
}

我以前遇到过这个问题,当时我正在从谷歌加载jQuery,由于某种原因它没有从谷歌加载。我不确定你是否有同样的问题,但你可以尝试的是这样的东西,如果不能从谷歌加载,然后加载本地

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
if (!window.jQuery) {
    document.write('<script src="/script/jquery.1.11.0.min.js"><\/script>');
}
</script>

如果(!window.jQuery){
文件。写(“”);
}

onload和onready的区别在于onload负责特定的元素。onready正在处理整个页面。
在这种情况下,我建议将jQuery添加到您的页面并使用
$(document).ready(要执行的函数(){/*代码*/})

只需在body标签的底部插入

当您说它不起作用时,并不意味着jQuery没有加载,是吗?只是有些函数不起作用?如果您在页脚之前的页面中有函数调用,并且在页脚中加载jQuery,那么这些函数将不起作用。嗨,Artm,是的-我的意思是jQuery有时没有加载。我忘了告诉您,我将整个JavaScript从所有页面移到了默认视图文件Hi Elzi,我也尝试过,但没有起作用。奇怪的是,JavaScript大部分时间在Firefox上运行,但在Chrome和IE上不起作用。同样,当尝试时:“document.addEventListener”-IE给我一个错误,JavaScript根本不加载(我使用的是XP的IE7)。IE7?Ooof。是的,你需要
attachEvent
instead没有尝试过这个功能-你认为这个功能可以在所有浏览器上运行吗?不。为什么不做一个if-else,检测if-IE7,else做所有其他的呢?这是一个很好的建议,让我试试你的解决方案,很快会用结果更新你。是的,我也在使用谷歌加载它。我将尝试在本地加载它,看看会发生什么
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
if (!window.jQuery) {
    document.write('<script src="/script/jquery.1.11.0.min.js"><\/script>');
}
</script>