我升級我的應用程序從.NET 4.0到4.5,從1.4.17升級到Breeze.js 1.5.4。事情似乎在IE11和其他瀏覽器運作良好,但在IE8(或IE11在IE8模式),我得到一個「對象不支持此屬性或方法」錯誤與在這部分代碼的_normalizeServiceName
方法:對象不支持在IE8此屬性或方法:_normalizeServiceName
function updateWithConfig(obj, config) {
if (config) {
assertConfig(config)
.whereParam("serviceName").isOptional()
.whereParam("adapterName").isString().isOptional()
.whereParam("uriBuilderName").isString().isOptional()
.whereParam("hasServerMetadata").isBoolean().isOptional()
.whereParam("jsonResultsAdapter").isInstanceOf(JsonResultsAdapter).isOptional()
.whereParam("useJsonp").isBoolean().isOptional()
.applyAll(obj);
obj.serviceName = obj.serviceName && DataService._normalizeServiceName(obj.serviceName); // <<< Error here
obj.adapterInstance = obj.adapterName && __config.getAdapterInstance("dataService", obj.adapterName);
obj.uriBuilder = obj.uriBuilderName && __config.getAdapterInstance("uriBuilder", obj.uriBuilderName);
}
return obj;
}
我可以看到_normalizeServiceName
方法被定義權updateWithConfig
後:
ctor._normalizeServiceName = function (serviceName) {
serviceName = serviceName.trim();
if (serviceName.substr(-1) !== "/") {
return serviceName + '/';
} else {
return serviceName;
}
};
如果我跟蹤過那裏DataService
定義,ctor
確實有返回時,它定義的_normalizeServiceName
方法,而是通過時間updateWithConfig
是稱爲從DataService
丟失。
的錯誤,當我創建一個新的EntityManager
發生:
this.manager = new breeze.EntityManager(appRoot + "breeze/myapp");
微風網站似乎是說,IE8仍然支持。我有條件註釋中引用了ES5 Shim/Sham腳本:
<!--[if lt IE 9]>
<script src="/myapp/js/respond.js"></script>
<script src="/myapp/js/es5-shim.js"></script>
<script src="/myapp/js/es5-sham.js"></script>
<script src="/myapp/js/json3.js"></script>
<![endif]-->
那麼,IE8仍然支持Breeze?我錯過了什麼,我需要在我的代碼更新從微風1.4.x中去1.5.x的(我唯一改變的事情是關係到Promise
API似乎改變)時?或者這是微風中的一個錯誤?