与IE7相比,IE8中外部JavaScript文件的加载顺序是否不同?

时间:2009-09-17 20:10:45

标签: javascript internet-explorer

我问,因为我正在运行一个应用程序,在该应用程序中我在页面的HEAD部分加载外部脚本文件,然后尝试在BODY标记的onLoad部分调用它的函数。

external.js

function someFunction()
{
   alert("Some message");
}

myPage.html下

<html>
  <head>
    <script type="text/javascript" language="javascript" src="external.js"></script>
  </head>
  <body onLoad="someFunction();">
  </body>
</html>

使用IE8中的开发人员工具,我在onLoad语句中抛出一个异常,因为显然还没有加载外部javascript文件。

我之前没有遇到过这个问题,因此我的问题就出现了。

他们是否更改了IE7和IE8之间的加载顺序?如果是这样,有更好的方法吗? (真正的函数引用了许多其他函数和常量,在外部文件中看起来要好得多)

谢谢, B.J。

3 个答案:

答案 0 :(得分:2)

嗯,实际上我觉得很蠢。

原来问题不在于加载顺序。问题是外部javascript文件的一个函数有一个语法错误,显然当抛出异常时它完全使整个文件失效,从而使其余的函数对主页不可用。

我不确定IE8中这种行为与IE7相比是否有所不同,但无论如何,这是真正的问题。

感谢您的回复。

B.J。

答案 1 :(得分:1)

我非常怀疑他的改变会打破相当多的网站。

试试这个(不使用开发者工具): -

<body onload="alert(somefunction)">

这不应该破坏,并告诉你是否在onload点执行是否可以看到标识符somefunction

答案 2 :(得分:0)

假设您认为正在发生的事情正在发生,您应该稍后尝试附加body.onLoad。

为简化起见,您可以使用Prototype(当然包括原型)和

来完成
Event.observe(window, 'load', function() { myFunction.init() });
使用

或JQuery(包括JQuery)

$(document).ready(function(){
  // Your code here...
});

我认为有一种纯粹的Javascript方法可以做到这一点,但问题是body元素还不存在,所以它很粗糙......

也就是说,我在使用IE8在Javascript中运行body onload并使用外部文件将其正确放入body标签时没有任何问题。我现在要出于好奇来测试,我会报告回来。

编辑:从外部文件执行上传是没有问题的。然而,当我们参与其中时,你可能想要了解JQuery,Prototype或Scriptaculous:)