JavaScript: jak sprawdzić, czy postać jest RTL?
Jak mogę programowo sprawdzić, czy przeglądarka traktuje jakiś znak jako RTL w JavaScript?
Może tworząc przezroczysty DIV i patrząc na miejsce umieszczenia tekstu?
Trochę kontekstu. Dodano Unicode 5.2 do obsługi alfabetu Avestan. Więc jeśli przeglądarka obsługuje Unicode 5.2, traktuje znaki takie jak U + 10B00 jako RTL (obecnie tylko Firefox). W przeciwnym razie traktuje te znaki jako LTR, ponieważ jest to ustawienie domyślne.
Jak programowo to sprawdzić? Piszę skrypt wejściowy Avestan i chcę zmienić kierunek bidi, jeśli przeglądarka jest zbyt głupia. Ale jeśli przeglądarka obsługuje Unicode, ustawienia bidi nie powinny być nadpisywane (ponieważ pozwoli to na miksowanie Avestanu i cyrylicy).
Obecnie to robię:
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';
}
}
Ale, oczywiście, spowodowałoby to, że skrypt byłby mniej użyteczny po tym, jak Chrome i Opera zaczną obsługiwać Unicode 5.2.