javascript определяет опцию отступа текста тега параметра или определяет тип браузера как запасной вариант - PullRequest
1 голос
/ 21 декабря 2011

У меня есть раскрывающийся список выбора, который должен представлять иерархию страниц на сайте.

<select id="parent" name="parent">
<option value="">(none)</option>
<option class="inset0" value="home">home</option>
<option class="inset1" value="aboutpage">aboutpage</option>
<option class="inset2" value="about">about</option>
<option class="inset2" value="staff">staff</option>
<option class="inset1" value="news">news</option>
<option class="inset1" value="products">products</option>
<option class="inset2" value="starter">starter</option>
<option class="inset3" value="nesso">nesso</option>
</select>

Конструкция выполнена на основе и стилизована с использованием CSS.

option.inset0 {text-indent:0px;}
option.inset1 {text-indent:10px;}
option.inset2 {text-indent:20px;}
option.inset3 {text-indent:30px;}
option.inset4 {text-indent:40px;}
option.inset5 {text-indent:50px;}
option.inset6 {text-indent:60px;}

При этом параметры более глубоких уровней отображаются с отступом в зависимости от глубины каждой страницы в иерархии сайта. Однако этот стиль работает только в FireFox, а не в Chrome. Я знаю, что стилизация элементов управления в значительной степени неравномерна среди браузеров и операционных систем, поэтому я не буду туда идти Вместо этого я хотел бы добавить символы «-» перед текстом каждого параметра, чтобы сделать иерархию видимой. Мне нужно сделать это только для Chrome, поскольку в этом проекте я вообще не поддерживаю IE.

Манипуляции с текстом объекта будут выполняться в javascript.

Мой вопрос такой:

Зная, что обнаружение в браузере не рекомендуется, и вместо него рекомендуется обнаружение функций, как я могу выполнить обнаружение функций для этого поведения браузера? Если это невозможно, есть ли быстрый тест, который позволит мне узнать, нахожусь ли я в Chrome / webkit или Firefox / Gecko?

1 Ответ

1 голос
/ 21 декабря 2011

Я не представляю, как можно было бы обнаружить это. Я подумал, что, возможно, вычисленный стиль не может быть установлен, однако быстрый тест показал, что это так.

Существует официальная страница (http://trac.webkit.org/wiki/DetectingWebKit) об обнаружении WebKit, но ему 4 года, и сценарий просто проверяет строку агента пользователя, что в основном то же самое, что jQuery делает для $.browser.webkit.

Что касается конкретного определения Chrome, он определяет window.chrome (я не могу найти официальную документацию, но вижу Безопасный, основанный на функциях способ обнаружения Google Chrome с помощью Javascript? ), но я предполагаю, что проблема рендеринга будет во всех браузерах Webkit.

...