3

このフィドルは、IEとFFの両方で「5,5」の正しい値を返しますが、Chromeでは「5.5」を返します

フィドル: http: //jsfiddle.net/4tvSH/

Globalize.culture("sv-SE");
alert(Globalize.format(5.5));

Globalizeプラグインにバグはありますか?

編集:

これは奇妙です、Web.Config(MVC3)で私はこれを持っています

<globalization enableClientBasedCulture="true" />

つまり、クライアントがカルチャを設定し、chromeとFFの両方がsv-SEを報告するため、ロードされるGlobalizeカルチャは上記のフィドルのようにsv-SEになります。

しかし、Chromeの767行で上記のコードをデバッグすると

return culture.name.length ? value.toLocaleString() : value.toString();

value.toLocaleString()はen-US形式を返します

これは機能しますが、ハックです。

//Fixes a bug in Globalize/Chrome where Globalize.format returns en-US format even with sv-SE
if($.browser.webkit == true) {
    Globalize.orgFormat = Globalize.format;
    Globalize.format = function(value, format) {
        if(format == null) {
            format = "N";
        }

        return this.orgFormat(value, format);
    };
}
4

1 に答える 1

0

Chrome は確かに value.toLocaleString() を firefox とは異なる方法で処理しているようですが、これは Globalize のバグと見なす必要があると思います。

私はGlobalize forkでこの動作を修正しました。これは toLocaleString iirc を削除するのと同じくらい簡単でした。

于 2012-05-31T19:25:17.180 に答える