localeCompare()
函数在Firefox扩展主代码和Web Worker(或Chrome Worker)中的行为不同。例如,在主代码中,我有以下代码:
var array = ["École", "Frère", "frère", "école"];
array.sort(function(a, b) {
return a.localeCompare(b);
});
console.log('Main: ' + array);
它显示:
Main: �cole,�cole,Fr�re,fr�re
哪种排序方式是正确的(编码不是我的问题)。
在 worker 中,我有这段代码:
var array = ["École", "Frère", "frère", "école"];
array.sort(function(a, b) {
return a.localeCompare(b);
});
self.postMessage(array);
输出如下:
Frère,frère,école,�0cole
这是一个顺序错误的问题(再次强调,编码不是我的问题)。
主代码中的排序是正确的,但是在 web worker 中的排序不正确。
我尝试更改 web worker 中 localeCompare()
函数的选项,但没有任何变化。
为什么 web worker 中的排序与主代码中的排序不同?如何在 web worker 中得到正确的排序结果?
由于某种原因,我无法将数据发送到主代码中进行排序,然后再将其发送回 web worker。我仍然得到了错误的顺序(给我école,�0cole,Frère,frère
)。
谢谢您的帮助。
new Date().toLocaleDateString()
也可能无法正常工作)。如果我是正确的,那么这是JS引擎问题,除了提交错误报告外,你无能为力。 - Wladimir Palantnew Date().toLocaleString()
在主代码和工作器中都会给我返回mer 15 mai 2013 13:18:58 EDT
。因此,该语言环境似乎在工作器中可以正常工作(至少对于日期而言)。最让我困惑的是,我无法将数组发送到主代码并在那里进行排序。您知道为什么我不能这样做吗?谢谢。 - antoyo