Можно ли сделать сгенерированный CSS контент доступным для поиска в браузере?

Я запускаю веб-сайт, который использует псевдоэлементы CSS для вставки текста здесь и там. Один из них вставляет значение счетчика CSS (после чего потребуется значительная переработка системы, чтобы сделать это без внедрения текста CSS). Конкретное правило CSS:

.num_defn .theorem_label:after {
    content: " " counter(definition, decimal);
    counter-increment: definition;
}

и это преобразует "Определение" в "Определение 1" (скажем).

Однако введенный текст недоступен для поиска в браузере. Он не видит 1: если я ищу «Определение 1», он его не находит, а если я ищу «Определение. Каким бы ни был текст определения», тогда браузер с радостью выделяет строку, кроме вставленной 1. . Итак, если вы представляете жирный текст как выделение, это будет выглядеть так:

Определение 1 . Каким бы ни был текст определения

Это не идеально! Людям нравится обращаться к определениям по их номеру и говорить: «Посмотрите на определение 1 на странице XYZ» (и в контекстах, где гиперссылки недоступны — я знаю, странно, но такое случается).

Таким образом:

  1. Есть ли способ, которым я, на стороне сервера, могу обозначить введенный текст как «доступный для поиска»?
  2. Если нет, есть ли простой способ в браузере, чтобы это можно было включить?

person Andrew Stacey    schedule 07.11.2012    source источник
comment
Выполняется ли ваш поиск кодом на стороне вашего сервера?   -  person Ryan    schedule 08.11.2012
comment
@ryan Нет. Это стандартная поисковая система браузера.   -  person Andrew Stacey    schedule 08.11.2012
comment
Если об изменении вашего кода на стороне сервера, чтобы сделать это в вашем HTML, не может быть и речи, вам остается только JavaScript. Это должно быть довольно тривиально.   -  person Tim Down    schedule 22.05.2013


Ответы (1)


Насколько я знаю, нет никакого способа. Вероятно, вы могли бы использовать JS для доступа к этой информации, но это было бы своего рода «взломом».

И я думаю, что это имеет смысл, если подумать о назначении HTML и CSS. Как вы, возможно, знаете, HTML предназначен для описания семантического значения содержимого, а CSS предназначен для управления внешним видом страницы. Короче говоря, если вы вообще добавляете какой-либо текст на свою страницу с помощью CSS, он должен быть там только в стилистических целях.

Если это настоящий текст, который должен что-то значить для посетителя вашего сайта, вы должны иметь его на своем сайте непосредственно в виде HTML.

Кроме того, то, как вы это сделали, противоречит передовой практике. Потому что, если бы вы отключили CSS, часть контента исчезла бы.

person galdikas    schedule 08.11.2012
comment
Спасибо за ответ. Впрочем, я могу поспорить с вашей точкой зрения. Счетчики CSS предназначены для подсчета вещей и, предположительно, для отображения этого количества где-то. Если у вас есть длинный список <ol>, вы можете сказать «Посмотрите на тридцатый элемент», после чего кто-то может искать 30.. Я только что проверил это, и это тоже не работает. Спорный вопрос о том, вставляется ли 30. с помощью CSS или HTML, поскольку в HTML существует (нестандартное, но широко распространенное?) значение по умолчанию, которое может быть переопределено с помощью CSS. - person Andrew Stacey; 08.11.2012
comment
Ну а пули в списке — это только стилистическая особенность. Разница между ‹ol› и ‹ul› с точки зрения семантики заключается в том, что в ‹ol› вы говорите, что порядок элементов имеет значение, тогда как в ‹ul› вы говорите, что это не так. Но, например, вы можете установить маркеры ‹ul› как числа, если хотите, и это все равно не будет считаться частью контента.. и наоборот, вы можете изменить маркеры ‹ol›, чтобы они были просто кружками. И еще раз хочу повторить, что все, что вы выводите через CSS, должно быть строго стилистическим :) - person galdikas; 08.11.2012