请教大牛Chroe下无法执行的Js

vixiaoan 2010-01-24 11:19:02
代码如下:
<html>
<head>
<title>Test Json</title>
</head>
<body>
<script type="text/javascript">
sc=document.createElement('script');
sc.type='text/javascript';
sc.src='1.js';
document.getElementsByTagName("head")[0].appendChild(sc);
</script>
<script>
fn();
</script>
</body>
</html>

1.js的代码如下

function fn(){
alert('Hello 1html');
}

问题是在IE和Firefox下都可以运行。但是在Chrome下无法运行请教高手是什么原因。小弟刚刚入门还望不吝赐教!
...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudgamer 2010-01-25
  • 打赏
  • 举报
回复
mark
呼吸先生 2010-01-25
  • 打赏
  • 举报
回复
学习了。。
eduyu 2010-01-25
  • 打赏
  • 举报
回复
我看到过chrome工程师的解释,大意是这首先,DOM没有ready之前,是没有标准的,而后为了让DOM最快速度显示,对于append的外部js是放在DOM的ready之后来处理的。

建议,DOM ready之后再操作DOM,或者可以试试document.write,也许chrome的内部流程会不一样。
dh20156 2010-01-25
  • 打赏
  • 举报
回复
需要考虑执行顺序。参见如下测试代码,此代码在各浏览器中执行结果是一致的:


<html>
<head>
<title>Test Json </title>
</head>
<body>
<script type="text/javascript">
var o = {};
o.fnA = function(){};

var sc = document.createElement('script');
sc.type = 'text/javascript';
sc.src = 'x.js';
document.getElementsByTagName("head")[0].appendChild(sc);

for(var d in o){alert(d);}//无法立即获取到更新(貌似FF中弹两次fnA,有人知道原因么?)

document.onclick = function(){
for(var d in o){alert(d);}//在稍候的操作里可以看到有更新
};
</script>
</body>
</html>


x.js

o.fnB = function(){};
vixiaoan 2010-01-24
  • 打赏
  • 举报
回复
如果要在Chrome中能够引入外部js应该怎么写呢?标题Chrome写错了:(
happy664618843 2010-01-24
  • 打赏
  • 举报
回复
兼容 问题

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧