我们必须在页面中显示一些可能是英文或阿拉伯文的文本。我们正面临文本方向的问题。
对于英语,方向是从左到右,对于阿拉伯语,方向是从右到左。我们添加了“dir=auto”来动态地做这件事。 [意味着根据内容语言方向会改变]
Exp :
<table>
<tr>
<th>english text</th>
<th>arabic text</th>
</tr>
<tr>
<td dir=auto><span>love</span></td>
<td dir=auto><span >حبحبحب</span></td>
</tr>
</table>
这些更改与 Firefox 和 Chrome 完美配合。但是 IE 不支持这个属性,我们很难找到一些替代方法来做。
那么,我们的问题是,如何根据内容 (IE) 更改文本方向“从左到右”/“从右到左”?
感谢您的帮助。
最佳答案
因为至少 IE 11 不支持 dir="auto"
正确,我写了下面的辅助方法:
/**
* Helper to determine if text is LTR text.
* We assume that any left-to-right text contains at least one character from a to z,
* or ONLY the following characters: # _ [any alphanumeric character, including digits]
*
* @param {string} string
*
* @returns {boolean}
*/
function isLtr(string) {
return string.match(/[a-z]+|^[\#\w]+$/gi) !== null;
}
使用该助手,我检查每个元素的文本并手动设置 dir="rtl"
,如您在这个简化示例中所见:
var element = document.querySelector('.element-with-dir-auto');
var text = '#حبحبحب';
if (!isLtr(text)) {
element.setAttribute('dir', 'rtl');
}
您可能需要调整辅助方法的正则表达式以更好地涵盖您的相关案例。
关于php - IE 中是否有 dir=auto 的替代属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18060215/