有人可以确认firefox(3.6)会在没有明确调用的情况下自动运行名为'onload'的javascript函数吗? Chrome和IE不会自动运行声明的函数,除非被调用,但是firefox显然会运行声明的函数'onload',即使它没有被调用(全部在小写中)。
以下是要测试的jsfiddle link。
在body标签中,如果将名为'test'的函数分配给onload事件,则firefox将调用test函数。如果删除onload调用,firefox将自动调用函数'onload'。
这是firefox的已知属性吗?
答案 0 :(得分:3)
这是因为如果您声明全局function onload()
,那么它实际上是window.onload
。
这个例子解释了它:
<script>
var a = 1;
alert(window.a); // alerts "1"
</script>
这应该是跨浏览器有效的(我只在FF3.6和IE7,8上测试过它。)
答案 1 :(得分:3)
Firefox 3.6实际上确实这样做了。 4-8也是如此。 Firefox 9修复了这个错误,因此function onload() {}
不再将该函数添加为加载事件监听器。有关更改的详细信息,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=659350。