Как проверить, выделен ли текст на веб-странице? - PullRequest
3 голосов
/ 25 февраля 2012

Если на моей html-странице много текста и некоторые слова имеют форматирование. Если я использую

windows.find(text);

Это поможет найти текст на веб-странице. Но как я могу узнать, что искомый текст выделен жирным шрифтом в документе?

Например, если HTML-код моей страницы:

 <body>
      Hello Techie, <b>I</b> am in bold.
 </body>

Если я использую window.find("I am"), это будет соответствовать тексту. Но как я могу узнать, выделено ли «Я» жирным шрифтом или нет?

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

Ответы [ 2 ]

4 голосов
/ 25 февраля 2012

window.find(), где поддерживается, перемещает выделение к найденному тексту.В этом случае вы можете использовать document.queryCommandState() для проверки жирности выбранного контента, что дает преимущество в работе независимо от того, как установлена ​​жирность (элементы CSS font-weight, <b> или <strong>).К сожалению, в браузерах не IE вы должны временно перевести документ в режим разработки, чтобы эта работа работала:

Демонстрация: http://jsfiddle.net/efN8P/

Код:

document.designMode = "on";
window.find("I am");
var isAllBold = document.queryCommandState("Bold");
alert(isAllBold);
document.designMode = "off";
3 голосов
/ 25 февраля 2012

Это работает, но я не уверен в совместимости между браузерами: http://jsfiddle.net/VALr3/1/. Он проверяет, является ли элемент <b> частью выбранных элементов.

window.find("I am");

var sel = window.getSelection(),
    frag = sel.rangeCount > 0 && sel.getRangeAt(0).cloneContents();

alert(frag && frag.querySelectorAll("b").length > 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...