Можно ли получить режим записи и направление письма пользователя? - PullRequest
0 голосов
/ 09 июля 2019

Возможно ли получить режим записи пользователя? Я хотел бы знать, является ли текст RTL или LTR и TB.

Похоже, я могу получить направление и режим записи из computedValue.

#div2 {
  writing-mode: vertical-lr;
}

#div1 {
  direction: rtl;
}

p {
  background-color: #FFEECC;
}
<p>While the characters in most scripts are written from left to right, certain scripts are written from right to left.</p>

<p id="div1">While the characters in most scripts are written from left to right, certain scripts are written from right to left. In some documents, in particular those written with the Arabic or Hebrew script, and in some mixed-language contexts, text in a single (visually displayed) block may appear with mixed directionality. This phenomenon is called bidirectionality, or "bidi" for short.</p>

<p id="div2">While the characters in most scripts are written from left to right, certain scripts are written from right to left. I</p>

Или есть рекомендуемый способ получения этой информации, например режим IME?

Является ли способ определения направления и режима письма или языка подходящим для других языков?

https://www.w3.org/TR/css-writing-modes-3/

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Relationship_of_Flexbox_to_Other_Layout_Methods#Writing_Modes

Ответы [ 2 ]

2 голосов
/ 09 июля 2019

Ответ:

Используйте метод getComputedStyle Window.

 getComputedStyle(document.body).direction;
 getComputedStyle(document.body)["writing-mode"];

Почему?

В отличие от простого доступаstyle объект узла, который может вернуть пустую строку по умолчанию (ae direction по умолчанию равен "ltr", но вернет ""), getComputedStyle будет возвращать значение стиля, запрашиваемое каждый развремя, включая значения по умолчанию.


Пример:

let direction = getComputedStyle(document.body).direction;
let writing_mode = getComputedStyle(document.body)["writing-mode"];
console.log(direction, writing_mode);

В сторону:

Может также использоваться в комбинации с Назначение деструктуры :

let {direction, "writing-mode": writing_mode} = getComputedStyle(document.body);

let {direction, "writing-mode": writing_mode} = getComputedStyle(document.body);
console.log(direction, writing_mode);
1 голос
/ 09 июля 2019

HTML-документ имеет атрибут «direction», который указывает направление языка для его содержимого, но он не отражает направление чтения пользователя (т. Е. Американский пользователь в США может посетить японский веб-сайт и направление чтения содержимого). RTL).

Вместо этого вы можете получить язык браузера пользователя, используя Javascript для проверки глобального свойства:

navigator.language

В результате вы получите код языка ISO (т. Е. «En-US»), который вы можете сравнить с массивом кодов ISO для языков RTL (легко получить из Google), а также список кодов ISO для BTT. языки.

...