БетаЛаборатория - внеочередной IT-блог

Записки обычного программиста

 

Подсветка синтаксиса, часть вторая

Мои эксперименты так важны, так прекрасны, так удивительны, что я с трудом могу оторваться от них, чтобы поесть.
(с) Н. Тесла

Как я и думал, встраивание подсвеченного кода в пост в чистом виде оказалось решением скверным. Причем, помимо неудобств при редактиваронии, такой подход вызывает дополнительные проблесмы при экспотре RSS - лишние теги + лишние стили... ничего хорогошего вобщем. =)
 
В итоге я заменил способ подстветки - теперь это работает так:
 
В WYSIWYG вставляется контейнер с небработанным кодом, которому присваивается класс highlight и в аттрибуте lang указывается язык для подсветки. По окончании загрузаки страницы, из всех контейнеров класса highlight извлекается их содержимое и AJAX-запросом отправляется на сервер, а полученный результат замещает собой первоначальный контейнер.
 
Выполнено это пока не очень изящно, однако работает.
 
$(document).ready(function() {
	$(".highlight").each(function() {
		var hObject = $(this);
		$.post("/tools/highlight/", {
			"language" : hObject.attr("lang")? hObject.attr("lang") : "text",
			"code" : hObject.html()
		},
		function(response_data) {
			hObject.replaceWith($("<div>").append(response_data));
		});
	})
});
pyhoster, 27/11/2009 23:03

Обратите внимание так же на темы:

Комментарии

  • Как пользователь
  • Без регистрации
  • OpenID
Вы должны зарегистрироваться или авторизоваться, чтобы оставлять комментарии.

Введите код указаный на картинке:  

OpenID is not supported at this moment =(

Авторизация

Логин:

Пароль:


Регистрация | Забыли пароль?


Последние записи


Promo

Follow pyhoster on Twitter Subscribe

Реклама

A Django project.