首页 新闻 搜索 专区 学院

向大家请教一个IE加载JS顺序问题?

0
悬赏园豆:200 [已解决问题] 解决于 2012-03-22 10:48

我的代码是这样的:

<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
<meta charset="utf-8"/>
<script type="text/javascript">
window.onload
=function(){
var data='<html>\
<head>\
<meta charset="utf-8">\
<title>Demo</title>\
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"><\/script>\
<script type="text/javascript">\
$(function(){\
alert("abc");\
});\
<\/script>\
<\/head>\
<body>\
</body>\
</html>
';
window.frames[
"test"].document.open();
window.frames[
"test"].document.write(data);
window.frames[
"test"].document.close();
}
</script>
</head>
<body>
<iframe id="test" frameborder="0" name="test"></iframe>
</body>
</html>

这段代码在Chrome、FireFox下均可以正常运行,但在IE下第一次运行会提示$未定义,但刷新后有时又可以正常弹出"abc",所以猜测是运行到alert("abc")这段代码时IE还没有加载完jquery代码。

向大家请教解决方案,通过修改:

$(function(){\
alert("abc");\
});\

这一部分,让代码在IE789上可以正常运行,谢谢!

artwl的主页 artwl | 专家六级 | 园豆:16536
提问于:2012-03-21 22:42
< >
分享
最佳答案
0

这里提供一种方法,但在FireFox下好像有些问题,会弹出两次:

<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
<meta charset="utf-8"/>
<script type="text/javascript">
window.onload
=function(){
var data='<html>'+
' <head>'+
' <meta charset="utf-8">'+
' <title>Demo</title>'+
' <script type="text/javascript">'+
' function load_script(url, callback) { '+
' var script = document.createElement("script"); '+
' script.type = "text/javascript"; '+
' if (script.readyState) { '+
' script.onreadystatechange = function() { '+
' if (script.readyState == "loaded" ||script.readyState == "complete") { '+
' script.onreadystatechange = null; '+
' callback(); '+
' } '+
' } '+
' } else { '+
' script.onload = function() { '+
' callback(); '+
' } '+
' } '+
' script.src = url; '+
' document.getElementsByTagName("head")[0].appendChild(script); '+
' }'+
' load_script("http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js",function(){'+
' $(function(){'+
' alert("abc");'+
' });'+
' });'+
' <\/script>'+
' <\/head>'+
'<body>'+
'</body>'+
'</html>';
window.frames[
"test"].document.open();
window.frames[
"test"].document.write(data);
window.frames[
"test"].document.close();
}
</script>
</head>
<body>
<iframe id="test" frameborder="0" name="test"></iframe>
</body>
</html>
收获园豆:200
草根程序猿 | 初学一级 |园豆:129 | 2012-03-21 23:32
其他回答(2)
0

楼主可以用fidller去查看下加载顺序,以及时间,自然能够看出个所以燃来

az235 | 园豆:8283 (大侠五级) | 2012-03-21 23:03

js加载的时间太长了,所以出现这样的情况,博客园没法上传图片,MD要不给你发几张图片上来。

支持(0) 反对(0) az235 | 园豆:8283 (大侠五级) | 2012-03-22 08:33
0

mark..

秋风sao落叶 | 园豆:44 (初学一级) | 2012-03-22 08:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册