Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.04.2011, 02:13
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Получить некорректный HTML
Здравствуйте.
Понадобилась написать несложный парсер. И хотелось бы задавать тегу css класс, писать там все что вздумается, скриптом искать элементы с этим классом и придавать нужный вид тому что внутри тега.

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

Чтобы браузер не парсил содержимое тега, появилась мысль заключить в коммент содержимое тега, но опять же, придется обращаться к innerHTML (comment = document.createComment(myelem.innerHTML)),
потом появилась мысль добавить текстовые ноды в начале и конце содержимого тега "<!--" и "-->" соответственно, получить innerHTML, а потом отделить их. Но тогда браузер заменит угловые скобки на мнемоники и комментарий не получится.

Подскажите есть ли возможность получить текст внутри тега без изменений?
__________________
readOnly
Ответить с цитированием
  #2 (permalink)  
Старый 21.04.2011, 04:48
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

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

UPD
Проверил на синтакс хайлайтере http://alexgorbatchev.com/SyntaxHighlighter/
строку var a = "<span style = \"color: red\">";

Как и ожидал, та же проблема
__________________
readOnly

Последний раз редактировалось poorking, 21.04.2011 в 05:49.
Ответить с цитированием
  #3 (permalink)  
Старый 21.04.2011, 10:05
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Можно класть в textarea, но лучше всё-таки в JavaScript сразу.
Ответить с цитированием
  #4 (permalink)  
Старый 21.04.2011, 10:35
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от poorking
И хотелось бы задавать тегу css класс, писать там все что вздумается, скриптом искать элементы с этим классом и придавать нужный вид тому что внутри тега.
использование пространств имен еще никто не отменял
Ответить с цитированием
  #5 (permalink)  
Старый 21.04.2011, 11:08
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Kolyaj,
С текстареа очень удобно кстати, получать textarea c нужным css классом или другим каким атрибутом, брать value, div с подсвеченным кодом, прятать или удалять textarea , ставить рядом div.

Если напрямую в javascript помещать код требующий подсветки, то тоже возникает проблема, возьмем ту же строку
var a = "<span style = \"color: red\">";
alert(a);

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

Пока что это лучший вариант на мой взгляд, спасибо
__________________
readOnly
Ответить с цитированием
  #6 (permalink)  
Старый 21.04.2011, 11:33
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от poorking
то тоже возникает проблема
Нет никакой проблемы, если строку прогонять через json_encode (если у вас php).
<? $str = "Произвольная строка для JS"; ?>
<script type="text/javascript">
    var str = <?= json_encode($str) ?>;
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 21.04.2011, 12:30
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Нет, я все преобразования на клиенте делаю, просто получаю все
<textarea class = "marked"></textarea>
и их заменяю на другие созданные элементы.

А почему так хуже? Мне кажется это удобно, просто требующий изменения текст помещать в textarea с нужным классом
<textarea class = "marked">
	<span>
	var a = "<span style = \"color: red\">";
</textarea>

Примерно так делаю
(function(){
		var textareas = document.getElementsByTagName("TEXTAREA"), i = textareas.length;
		
		var markedSnippets = [], snippet, text;
		
		while(i --){
			snippet = textareas[i];
			if(/\b(marked)\b/.test(snippet.className)){
				markedSnippets.push(snippet);
			}
		}
		
		i = markedSnippets.length;
		
		
		
		while(i --){
			//HTMLEntities API [url]http://javascript.ru/blog/I-zone/Razbiraem-ponyatie-mnemoniki-praktike[/url].
			text = HTML.encode(HTML.decode(markedSnippets[i].value));
			
			/*
				Тут делаю нужные замены в text
			*/
			
			markedSnippets[i].parentNode.insertBefore(
				newDOM("DIV",
					{
						properties:{
							
							innerHTML: text,
							style:{
								whiteSpace: "pre"
							}
						}
					}
				),
			markedSnippets[i]);
			
			markedSnippets[i].style.display = "none";
		}	
	}())
__________________
readOnly
Ответить с цитированием
  #8 (permalink)  
Старый 21.04.2011, 13:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от poorking
А почему так хуже?
Ну например в строке может встретиться </textarea>
Ответить с цитированием
  #9 (permalink)  
Старый 21.04.2011, 14:26
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Правда ведь. Ну тогда и правда остается один вариант, напрямую брать текст
__________________
readOnly
Ответить с цитированием
  #10 (permalink)  
Старый 28.04.2011, 07:23
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от poorking
А почему так хуже? Мне кажется это удобно, просто требующий изменения текст помещать в textarea с нужным классом
все зависит от того, что ты делаешь. Если очередной шаблонизатор пишешь, то проблем тэгма с закрывающиом наверняка как-то решается, потому что есть куча шаблонизаторов построенных по этому принципы. Но проблема в том, что если ты разметку на самой странице указываешь, то сильнее привязываешь компонент к странице, чем если бы она была в виде строки в js-файле

правда непонятно, зачем тебе некорректный html
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
Получить html код удаленной страницы AntonP Общие вопросы Javascript 19 02.05.2012 16:15
Передача кода HTML Владимир Седов Общие вопросы Javascript 2 12.04.2011 16:48
Как получить ширину таблицы в пикселях, если в HTML она указана в процентах JackM Общие вопросы Javascript 2 13.02.2009 10:15
На входе HTML получить на выходе просто текст, как? Dmitry Общие вопросы Javascript 2 25.08.2008 10:42