为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森林海 2018-12-06 17:36:32
我的代码是这样的: <!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上可以正常运行,谢谢!
查看完整描述

4 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

这里提供一种方法,但在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>
查看完整回答
反对 回复 2018-12-24
?
皈依舞

TA贡献1851条经验 获得超3个赞

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

查看完整回答
反对 回复 2018-12-24
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

mark..

查看完整回答
反对 回复 2018-12-24
  • 4 回答
  • 0 关注
  • 588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号