2013-03-31 2 views
1

Каков наилучший способ определения направления текста элемента html с помощью Javascript? Я ожидал бы получить либо «rtl», либо «ltr».Как определить направление текста элемента с помощью Javascript?

<div dir="ltr" id="foo">bar</div> 

<div style="direction:ltr" id="baz">quux</div> 

<div dir="ltr"><div id="jeez">whiz</div></div> 

Как бы проверить направление на «foo», «baz» или «jeez»?

ответ

0

Вы можете просто использовать style объект:

console.log(document.getElementById('baz').style.direction); 

DEMO

принять к сведению, что этот объект DOM представляет только стили линии элемента, он не относится к какой-либо css style листов.

+0

Это не работает для унаследованных направлений, таких как div «jeez» сверху или стилей (как вы сказали). Наследование - фактически самый распространенный случай. – chowey

+0

@chowey Тогда я считаю, что вам нужен ответ взрыва. Мой плохой для неверного толкования того, что вы хотели. – Daedalus

1

Попробуйте

document.defaultView.getComputedStyle(document.getElementById('baz'),null)['direction']; 

ИЛИ

style = document.defaultView.getComputedStyle(document.firstChild,null); 
console.log(style.direction); 
+0

В чем разница между document.defaultView.getComputedStyle и window.getComputedStyle? – chowey

+0

@chowey Я не верю, что есть один. – Daedalus

+0

см. Http://stackoverflow.com/questions/8136501/whats-the-difference-bewteen-document-defaultview-getcomputedstyle-and-window-g –

1

@ взрыв-таблетки ответить правильно. Я сделал некоторые дополнительные исследования для совместимости IE и придумал следующее:

function getDirection(el) { 
    var dir; 
    if (el.currentStyle) 
     dir = el.currentStyle['direction']; 
    else if (window.getComputedStyle) 
     dir = getComputedStyle(el, null).getPropertyValue('direction'); 
    return dir; 
} 

Это должно работать даже на Firefox 3.6, который требует null в качестве второго параметра getPropertyValue.

Поскольку это дает больше информации, я думал, что опубликую его на случай, если это поможет кому-то.