我们有一个ASP.NET MVC Web应用程序,并且正在从旧版本迁移 的jquery-globalize.0.1.3 到新的jquery-globalize.1.3
在我们的Web应用程序中,我们有多个标签;每次单击选项卡时,浏览器窗口都会刷新,因此我们需要再次执行Globalize.Load才能使用dateizeter或currencyFormatter之类的Globalize方法。
因此,当新窗口呈现时,我们执行以下代码:
var appName = "/" + getApplicationName();
$.when(
$.get(appName + "/Scripts/cldr/main/en/ca-gregorian.json"),
$.get(appName + "/Scripts/cldr/main/en/numbers.json"),
$.get(appName + "/Scripts/cldr/main/en/currencies.json"),
$.get(appName + "/Scripts/cldr/main/en/timeZoneNames.json"),
$.get(appName + "/Scripts/cldr/supplemental/likelySubtags.json"),
$.get(appName + "/Scripts/cldr/supplemental/timeData.json"),
$.get(appName + "/Scripts/cldr/supplemental/weekData.json"),
$.get(appName + "/Scripts/cldr/supplemental/currencyData.json"),
$.get(appName + "/Scripts/cldr/supplemental/numberingSystems.json"),
$.get(appName + "/Scripts/cldr/supplemental/plurals.json"),
$.get(appName + "/Scripts/cldr/supplemental/ordinals.json")
).then(function () {
//alert("first then");
return [].slice.apply(arguments, [0]).map(function (result) {
return result[0];
});
}, function (reason) { alert(reason); }).then(Globalize.load, function (reason) { alert(reason); }).then(function () {
//alert("second then");
var culture = "@WebConfigurationSettings.LocalizationConfigurationSection.CurrentCulture";
if (culture == "en-US")
window._Globalize = new Globalize("en");
else if (culture == "en-GB")
window._Globalize = new Globalize("en-GB");
alert(window._Globalize.dateFormatter({ date: "short" })(new Date()));
console.log("Globalize locale is initialized");
}, function (reason) { alert(reason);});
这在Chrome中工作正常,但仅在第一次渲染窗口时才在IE11中工作。 好吧,即使在第一个窗口,IE11也会出现故障。始终会成功获取Json文件,我可以在“网络”选项卡的调试器中看到它们。另外,如果我在第一个或第二个“ then”内放置了警报 (alert(“先先发”);或alert(“先发第二则”);),然后显示警报。 但是,如果显示警报,则它不起作用:该行 window._Globalize = new Globalize(“ en”); 引发异常:Globalize.once不是一个函数。 删除警报,它将开始在我们的Web应用程序的第一个窗口上工作!怎么来的?只是警报的存在会杀死它。 但是,当随后的窗口被渲染时,它永远不会起作用:有或没有警报,尽管我们正在输入第一个和第二个“然后”。我遇到相同的JavaScript异常,无法创建Globalize。
同样,所有功能都可以在Chrome中正常运行。问题仅出现在IE11 / Edge中。
有什么想法吗?