Javascript块是不是应按照它们放在页面上的顺序执行?
在某些情况下,IE6似乎不遵循该规则。我的页面基本上是这样的:
<html>
<head>
<title>Widget Sandbox</title>
<script type="text/javascript" src="http://domain2.com/script.js"></script>
</head>
<body>
<script type="text/javascript">
myObj.doSomething();
</script>
</body>
</html>
此页面托管在一个域中,而顶部的脚本托管在第二个域上。 myObj
对象在外部脚本中定义,并在本地脚本块中使用。每隔一段时间,<body>
中的脚本块就会在<head>
中引用的脚本之前执行。
这个问题难以重现。如果我复制上面的页面并添加链接到副本,我通常会好运,反之亦然,然后单击链接直到我收到错误。
错误将是“myObj undefined”,后跟行号。
任何人都知道我可能做错了什么?这只发生在IE6中。该脚本在95%的情况下在IE6中完美运行。
答案 0 :(得分:2)
我曾经遇到的问题与你描述的问题非常相似。
只有特定版本的IE6才会发生这种情况。 JS被网络服务器gzipped,IE 6在JS之前执行了我的脚本,在它被下载之后但是在解压缩之前......非常奇怪......
当我在我的apache中为IE6请求禁用gzip时它解决了。 (不知道你能不能这样做) 另一种方法是设置一个计时器来检查是否定义了MyObj ....
答案 1 :(得分:0)
最可能的解释是第一个脚本有时无法加载,因为服务器删除了连接,服务器返回503 Service Unavailable error或类似的原因。
尝试运行像Fiddler这样的HTTP调试器;然后,当错误发生时,您可以检查HTTP请求/响应周期以查看问题所在。