Как я могу программно проверить, обрабатывает ли браузер какой-либо символ как RTL в JavaScript?
Может быть, создать прозрачный DIV и посмотреть, где находится текст?
Немного контекста. Unicode 5.2 добавила поддержку алфавита Avestan. Итак, если браузер поддерживает Unicode 5.2, он обрабатывает такие символы, как U + 10B00, как RTL (в настоящее время только Firefox). В противном случае он обрабатывает эти символы как LTR, потому что это значение по умолчанию.
Как программно проверить это? Я пишу вход Avestan script, и я хочу переопределить направление bidi, если браузер слишком тупой. Но если браузер поддерживает 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';
}
}
Но, очевидно, это уменьшит использование script после того, как Chrome и Opera начнут поддерживать Unicode 5.2.