3

我有一个JavaScript文件a.js,其含量有时这样即6找不到JavaScript的定义

window.model={}; 

model.init=(
function(){return "something"} 
)(); 
在我的HTML文件

,我有这样的事情:

<script type="text/javascript" src="path/to/a.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     model.init(); 
    }); 
</script> 

在铬,火狐和ie8它的作品。但在ie6或ie7中,它将如此模型没有定义。

我不知道为什么。任何人都可以帮助我。

谢谢!


我把一些警报

在HTML:

<script type="text/javascript" src="path/to/a.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
      alert("ie6"); 
     model.init(); 
    }); 
</script> 

在JS

alert("ie7"); 
window.model={}; 

model.init=(
function(){return "something"} 
)(); 

它打印 “IE6” 第一,但 “IE7” 从来没有打印出来

+3

对不起你不得不支持IE6 ....... – Rooster 2012-03-29 15:24:55

+4

[世界的7.1%,使用IE6(http://www.ie6countdown.com/),为什么不给他们一个美丽的旗帜告诉他们他们的浏览器很烂,他们应该升级还是走开? – 2012-03-29 15:28:21

+0

今天我的用户告诉我,网络在他的ie浏览器中不工作。所以,我必须修复它 – mike 2012-03-29 15:35:58

回答

1

这可能是由不同执行顺序或一些“提升”问题。

尝试使用“var model = {}”初始化模型。然后尝试将东西转储到日志以检查执行顺序。 IE有工具可以使用console.log,或者你可以尝试firebug lite。

+0

我已添加一些警报 – mike 2012-03-29 16:05:00

2

参考模型与声明它的方式相同,作为window上的属性。

window.model.init=(function(){return "something"})(); 

$(document).ready(function() { 
    window.model.init(); 
}); 

或者,你可以做相反的事情,并将其声明为全局变量。

var model={};