JavaScript: как проверить, является ли символ RTL?
Как программно проверить, обрабатывает ли браузер какой-либо символ как RTL в JavaScript?
Может быть, создать прозрачный DIV и посмотреть, где находится текст?
A bit of context. В Unicode 5.2 добавлена поддержка авестийского алфавита. Таким образом, если браузер поддерживает Unicode 5.2, он обрабатывает такие символы, как U + 10B00, как RTL (в настоящее время только Firefox поддерживает). В противном случае он обрабатывает эти символы как LTR, потому что это значение по умолчанию.
Как мне программно проверить это? Я пишу сценарий ввода Avestan и хочу изменить направление двунаправленного текста, если браузер слишком тупой. Но, если браузер поддерживает Unicode, параметры биди не должны быть переопределены (так как это позволит смешивать Avestan и кириллицу).
В настоящее время я делаю это:
var ua = navigator.userAgent.toLowerCase();
if (ua.match('webkit') || ua.match('presto') || ua.match('trident')) {
var input = document.getElementById('orig');
if (input) {
input.style.direction = 'rtl';
input.style.unicodeBidi = 'bidi-override';
}
}
Но, очевидно, это сделает скрипт менее пригодным для использования после того, как Chrome и Opera начнут поддерживать Unicode 5.2.