ブラウザがJavaScriptで一部の文字をRTLとして処理するかどうかをプログラムで確認するにはどうすればよいですか?
透明なDIVを作成して、テキストが配置されている場所を確認しているのではないでしょうか。
少しコンテキスト。Unicode 5.2では、アヴェスター文字のサポートが追加されました。したがって、ブラウザがUnicode 5.2をサポートしている場合、U + 10B00のような文字をRTLとして扱います(現在はFirefoxのみがサポートしています)。それ以外の場合は、これがデフォルトであるため、これらの文字をLTRとして扱います。
これをプログラムで確認するにはどうすればよいですか?私はAvestan入力スクリプトを書いていますが、ブラウザーがあまりにも馬鹿げている場合は、bidiの方向をオーバーライドしたいと思います。ただし、ブラウザがUnicodeをサポートしている場合は、双方向設定を上書きしないでください(これにより、AvestanとCyrillicを混在させることができるため)。
私は現在これを行っています:
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のサポートを開始した後、スクリプトが使いにくくなります。