我们有一个外部 .js 文件,我们希望将其包含在许多不同的页面中。该文件包含用于在客户端对表进行排序的代码,并在脚本中使用 ▲ 和 ▼ 字符来指示对哪一列进行排序以及按哪个方向进行排序。
该脚本最初是为 ASP.Net 页面编写的,用于将一些排序工作从服务器卸载到客户端(防止启用 JavaScript 时排序回发)。在这种情况下,编码几乎总是 UTF-8,并且在这种情况下效果很好。
然而,我们也有许多旧的经典 ASP 页面,我们希望在其中包含脚本。对于这些页面,编码更像是一个大杂烩,具体取决于页面的编写者、时间以及他们使用的工具(记事本、vs6、vs2005、其他 html 帮助程序)。通常页面中没有指定编码,因此由浏览器来选择,但我确实没有看到硬性规则。
问题是,如果使用不同的(非 UTF8)编码,则 ▼ 和 ▲ 字符将无法正确显示。我尝试使用 html 实体,但无法让它们在 javascript 中正常工作。
如何使脚本针对各种潜在的编码进行调整,以便“特殊”字符始终正确显示?我是否可以使用不同的字符,或者我错过了使 html 实体通过 javascript 工作的技巧?
这是使用字符的片段:
// get sort direction, arrow
var dir = 1;
if (self.innerHTML.indexOf(" ▲") > -1)
dir = -1;
var arrow = (dir == 1)?" ▲":" ▼";
// SORT -- function that actually sorts- not relevant to the question
if (!SimpleTableSort(t.id, self.cellIndex, dir, sortType)) return;
//remove all arrows
for (var c = 0,cl=t.rows[0].cells.length;c<cl;c+=1)
{
var cell = t.rows[0].cells[c];
cell.innerHTML = cell.innerHTML.replace(" ▲", "").replace(" ▼", "");
}
// set new arrow
self.innerHTML += arrow;
出于好奇,我最终使用的已接受答案的代码点是 \u25B4 和 \u25BC。