<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312"/>
<meta name="keywords" content="SE_JsTree"/>
<title>使用选择城市对象</title>
<style type="text/css">v\:*{behavior:url(#default#VML);}</style>
<script src="ajax.js"></script>
<script src="place.js"></script>
<script language="javascript">
alert(window.SE_ajax)
alert(window.SE_place)
</script>
</head>
<body>
<div style="position:absolute;left:620px;">
</div>
</body>
</html>
<!--
问题描述, 一个 ajax.js 一个place.js
ajax.js 内容为:
function AAA(aa){
alert(["ajax",aa])
window.SE_ajax = function(){
alert("SE_ajax");
}
}
AAA();
place.js 内容为:
document.writeln('<script language="javascript" src="ajax.js" type="text/javascript" charset="gb2312"></script>');
function AAA(){
alert(["place"])
window.SE_place = function(){
alert("SE_place");
}
}
AAA(456);
会发现一个怪异的现象 place.js中调用的AAA() 竟然是ajax.js中的!!! 其他浏览器没有此问题
解决方法:
1, 页面中的<script src="ajax.js"></script>去掉
2, (function(){})() 采用这种方式
总结: js是单线程的, 情况发生的原因应该是place.js刚刚定义完AAA(),然后ajax.js加载进来了,把前面的AAA()覆盖了...
-->
safari的一个怪异问题 (应该和javascript加载顺序有关)
最新推荐文章于 2022-07-27 23:17:23 发布