-
День добрый,
Пытаюсь использовать highlight.js для подсветки содержимого (XHTML), которое добавляется в документ динамически (XHR и немного разбора текста).
Не работает (WinXP/FireFox 3.0 и Opera 9.51).
Вот что я проверял:
- содержимое находится внутри тэгов pre>code
- знаки "больше", "меньше" и т.д. заменены на соотв. character references
- вызов hljs.initHighlightingOnLoad сделан после определения другого обработчика window.onload (того, который генерирует это содержимое)
Наверняка что-то забыл. =)
Есть ли возможность вызвать функцию "обработать текст", которая будет возвращать фрагмент DOM или XHTML, сериализованный в строку? (В общем-то, это все, что мне нужно.)
- Артем -
Там есть
hljs.highlightBlock(block), которой надо передпть элемент<code>(который в свою очередь находится внутри<pre>), и она его обработает прямо на месте. Поиск самих<code>остается на долю юзера (а точнее, его любимой библиотеки). -
>Там есть hljs.highlightBlock(block), которой надо передпть элемент <code> (который в свою очередь находится внутри <pre>)
Получается, что block уже должен быть в документе? У меня в скрипте это содержимое генерируется вот так:
DIV({id: 'test-'+sid},
H2(parsed.comment), DIV(PRE(CODE(parsed.html))),
TABLE(TBODY(
map(rows, function(r) {
return TR(TD(r.expr), TD(r.expect), TD(r.status), TD(r.detail));
}))));
parsed.html - это просто (X)HTML, без всякого экранирования (escaping'а).
Подставляю вызов hljs.highlightBlock в PRE(CODE(parsed.html)) - не работает (функция ничего не возвращает, зато пытается модифицировать дерево DOM, где все и останавливается).
Могу ли я немного изменить ваш код? -
Изменить конечно можно, кто вам может помешать? :-)
Я думаю, что все заработает, если результат вызова всего этого кода сначала вставить в документ, а потом прогнать на нужном
<code>highlightBlock.Впрочем, я наверное в следующей версии в любом случае разделю эту функцию на две: одна будет выдавать модифицированный элемент, а другая подменять его в DOM вместо старого. Видимо, первая вам и будет нужна.
Но повторюсь, меняйте все смело, потому что когда я еще доберусь до этого, не понятно.
-
>Изменить конечно можно, кто вам может помешать? :-)
Лень разве что. :)
>Но повторюсь, меняйте все смело, потому что когда я еще доберусь до этого, не понятно.
Ничего если добавится немного зависимостей? В частности мой NIH-free фреймворк (состоящий из modulesjs.com, DOMBuilder, Functional, XPath от LlamaLab и пр.).
В общем, выложу немного переписанный вариант, как будет готово. -
Ничего если добавится немного зависимостей? В частности мой NIH-free фреймворк (состоящий из modulesjs.com, DOMBuilder, Functional, XPath от LlamaLab и пр.).
М-м... Если речь идет о том, чтобы включить ваши изменения потом в сам highlight.js, то тогда нет. Отсутствие зависимостей от какого-либо фреймворка — его фича. Я сначала подумал, что вы просто хотите его поменять у себя или выложить отдельную версию где-то. С этим все хорошо, конечно.

