firefox - Firefox 扩展 Web Worker 中的区域设置字符串比较无法正常工作

标签 firefox firefox-addon firefox-addon-sdk web-worker

localeCompare()函数在 Firefox 扩展主代码和网络 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 中的排序不行。

我试图更改 localeCompare() 的选项功能,但它不会改变任何东西。

为什么 Web Worker 中的排序不同,以及如何在 Web Worker 中正确排序?

(由于某种原因,我无法将数据发送到主代码,进行排序并将其发送回网络 worker 。我仍然得到错误的顺序(给我 école,�0cole,Frère,frère)。)

谢谢你的帮助。

最佳答案

localeCompare在 Firefox Web Workers 中仍然存在问题。
弗拉基米尔提到 Bug 616841 ,它确实几乎在所有地方都修复了它......除了网络 worker ,因为国际后端(是?)不是线程安全的,或者其他一些线程安全问题,它们被破坏了。相应的“死胡同”补丁从未被审查或 checkin 。

我现在提交 Bug 903780 , 带有基于您的代码的测试用例,以便 localeCompare希望将来会得到修复。

关于firefox - Firefox 扩展 Web Worker 中的区域设置字符串比较无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16550774/

相关文章:

javascript - 如何防止多次加载 Firefox SDK 内容脚本?

firefox-addon - 在用户卸载时删除 Firefox Addon 首选项

http - 更新 XPI 以与 FF 4.0 兼容?

firefox-addon - 使面板仅适用于某些 URL

css - 隐藏垂直滚动条但仍然滚动 Firefox/IE/Edge

html - 未访问链接上的CSS动画

firefox - Firefox 9.0.1 中具有两种不同形状的字段集?

android - 火狐移动版 : element animated with translate3d flows out from parent container

android - 从 Firefox for Android 加载项加载后在当前页面上运行 JavaScript

firefox - 引导的 Firefox 扩展 : how to capture navigation events before a page request?