php - IE 中是否有 dir=auto 的替代属性

标签 php html

我们必须在页面中显示一些可能是英文或阿拉伯文的文本。我们正面临文本方向的问题。

对于英语,方向是从左到右,对于阿拉伯语,方向是从右到左。我们添加了“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/

相关文章:

php - 如何使用 PHP 删除重复的换行符

PHP 提取分隔符之间的字符串允许重复

php - 如何连接2个表并正确显示它们?

html - 跨浏览器显示

javascript - 脚本无法在简单的 html 文件中运行

javascript - 使用javascript加载页面后将外部CSS应用于动态html

php - php中mysql的左连接/外键问题

PHP:使用命名空间自动加载多个类

html - 在表格中添加对 Angular 线和虚线

html - 列表样式不显示在水平列表上