IE11中的JQuery-Globalize问题

时间:2019-01-28 22:51:49

标签: jquery-globalize

我们有一个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中。

有什么想法吗?

0 个答案:

没有答案