Проблема JQuery-Globalize в IE11 - PullRequest
       24

Проблема JQuery-Globalize в IE11

0 голосов
/ 29 января 2019

У нас есть веб-приложение ASP.NET MVC, и мы переходим с более ранней версии jquery-globalize.0.1.3 на новую jquery-globalize.1.3

В нашем веб-приложении имеется несколько вкладок;каждый раз, когда вы нажимаете на вкладку, окно браузера обновляется, поэтому нам нужно снова выполнить Globalize.Load, чтобы использовать методы Globalize, такие как dateFormatter или currencyFormatter.

Поэтому, когда рендеринг нового окна выполняется, мы выполняемследующий код:

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 всегда извлекаются успешно, их можно увидеть в отладчике на вкладке Сеть.Кроме того, если я помещаю оповещение внутри первого или второго «затем» (alert («сначала тогда») или alert («second then»);), тогда показываются оповещения.Но если отображаются предупреждения, то это не сработает: строка window._Globalize = new Globalize ("en");выдает исключение: Globalize.once не является функцией.Удалите оповещения, и он начнет работать в первом окне нашего веб-приложения!Как так?Просто наличие оповещений убивает это.Но он никогда не работает, когда отображаются следующие окна: с оповещениями или без них, хотя мы вводим первое и второе «потом».Я получаю то же исключение JavaScript и не могу создать Globalize.

Опять же, все отлично работает в Chrome.Проблема только в IE11 / Edge.

Есть идеи?

...