我正在开发一个网络应用程序,我在 jquery ui 组合框中显示阿拉伯语单词,它在 IE 和 firefox 中完美运行,但 chrome 以不同的方式显示单词!
你可以在组合框和下拉列表中看到两个sony的区别
这是我的元数据
<meta http-equiv="content-type" content="text/html";charset="utf-8" />
并且数据使用 collate 存储在 sql server 中
我正在开发一个网络应用程序,我在 jquery ui 组合框中显示阿拉伯语单词,它在 IE 和 firefox 中完美运行,但 chrome 以不同的方式显示单词!
你可以在组合框和下拉列表中看到两个sony的区别
这是我的元数据
<meta http-equiv="content-type" content="text/html";charset="utf-8" />
并且数据使用 collate 存储在 sql server 中
查看您在评论中提到的页面,http://jqueryui.com/demos/autocomplete/#combobox在 Chrome F12 编辑器中,似乎在这个浏览器中,出现了一个 jQuery 生成的下拉列表元素foo
,这样每个字符都是在一个单独的strong
元素内:<strong>f</strong><strong>o</strong><strong>o</strong>
. 在 Firefox 中,我看到的是一个生成的select
元素,带有<option>foo</option>
. 我想这取决于 jQuery,它试图适应浏览器的差异。
在任何情况下,标记 like <strong>f</strong><strong>o</strong><strong>o</strong>
,虽然对拉丁字母中的文本大多无害,但可能会严重混淆阿拉伯文本,因为它可能会使浏览器将每个字母视为独立的并为其使用独立的字形形式。参照。到问题Partially coloured arabic word in HTML。
我希望熟悉 jQuery 的人可以提出解决此问题的建议。所需要的只是避免将字母分隔为<strong>f</strong><strong>o</strong><strong>o</strong>
,使用 just <strong>foo</strong>
(如果简单foo
不会这样做)。
我没有;)在jquery ui组合框javascript中,您将拥有此功能
if (this.value && (!request.term || matcher.test(text))) return {
label: text.replace(
new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<span></span>"),
value: text,
option: this
};
我刚刚删除了“gi”所以代码是
if (this.value && (!request.term || matcher.test(text))) return {
label: text.replace(
new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", ""), "<span></span>"),
value: text,
option: this
};
它现在工作得很好:D
这取决于使用的字体,而不是字符集。
从您的屏幕截图中可以看出,即使“索尼”的拉丁变体也略有不同(注意 Y)。尝试在这两种情况下使用相同的字体。