0

我有以下问题:MVC3应用程序和JavaScript的问题

一个ASP.NET MVC3的应用程序,并在_Layout.cshtml,在标题部分中,我引用了几个JavaScript脚本,内容如下:

<script src="@Url.Content("~/Scripts/app/app.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/app/listEnveloppe.js")" type="text/javascript"></script> 

在app.js我已经定义应用程序对象如下:

var App = { 
init: function() { 
    if (window.console == undefined) { 
     window.console = { 
      log: function() { 
       var str = ''; 
       for (var i in arguments[0]) { 
        str += i + ':\t' + arguments[0][i] + '\n'; 
       } 
       alert(str); 
      } 
     }; 
    } 
/* ....*/ 
} 

然后应用对象是在listEnveloppe.js引用如下

App.listEnveloppe = new Function; 

问题是,此代码对FF和Chrome,但不是在IE8

有谁知道什么可能是错误的?

谢谢

回答

1

也许在Function构造缺乏括号?

App.listEnveloppe = new Function(); // <----- missing() ? 

由于这是没有的情况下,尝试声明(并参考)Appwindow属性。而做到这一点相对于脚本声明的顺序一种不可知论的方法:

// In app.js: 
var appInstance = window.App || {}; 
appInstance.init = function() { 
}; 

// In listEnveloppe.js: 
var appInstance = window.App || {}; 
appInstance.listEnveloppe = new Function(); 
+0

号我加入他们,但错误味精是:应用程序是未定义 – bzamfir 2012-01-17 13:37:44

+0

谢谢回答。然而,我不能这样做,因为对象应用程序进一步用于很多JavaScript文件和许多地方,并且许多这些文件甚至都不在我的控制之下。任何其他想法?奇怪,为什么它在FF和Chrome中可以正常工作(我无法在IE9中测试) – bzamfir 2012-01-17 16:17:48

1

你有一些未关闭的括号。尝试修理你的javascript:

var App = { 
    init: function() { 
     if (window.console == undefined) { 
      window.console = { 
       log: function() { 
        var str = ''; 
        for (var i in arguments[0]) { 
         str += i + ':\t' + arguments[0][i] + '\n'; 
        } 
        alert(str); 
       } 
      }; 
     } 
    } 

    /* ....*/ 
}; 
+0

我验证了并且paranthesis在app.js文件中没有问题。在提供的示例代码中,我只复制了app.js文件的一小部分 – bzamfir 2012-01-17 15:45:50