我问,因为我正在运行一个应用程序,在该应用程序中我在页面的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。
答案 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:)