Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Удаление тега из DOM (https://javascript.ru/forum/jquery/8432-udalenie-tega-iz-dom.html)

Nekromancer 25.03.2010 23:38

RegExp тоже медленно работает когда много текста, это раз. Во вторых мы заменим текст полностью. У объектов потеряются все мануально установленные свойста, в некоторых браузерах и события. Ещё и фрэйма перезагрузятся) это так, на вскидку вспомнил.

Не выход короче.

Aetae 25.03.2010 23:53

Эх похоже, придётся таки тестировать самому.) События и прочее - не волнует, просто парсится 1+мб форматированного текста на предмет ненужных тегов.
У меня сейчас есть вариант через innerHTML, работает в приципе достаточно быстро.(куда дольше грузится сам текст=) ).

Просто на первый взгляд, в случае когда единожды берётся innerHTML прогоняется через реплейс и вставляется, скрипт должен работать быстрее чем через кучу операций с DOM для каждого конкретного тега. Плюс могут вылезти заморочки с вложенностью, как подумаю об этом... =)

Nekromancer 26.03.2010 11:55

А вы не думайте :yes:
Для каждой задачи свои решения, кстати IE возвращает не правильный innerHTML ...

Kolyaj 26.03.2010 11:58

Цитата:

Сообщение от Nekromancer
IE возвращает не правильный innerHTML ...

Что значит неправильный?

Nekromancer 26.03.2010 12:13

Теги в верхнем регистре и атрибуты без кавычек. С точки зрения грамотности это не очень правильно.

Kolyaj 26.03.2010 12:16

Цитата:

Сообщение от Nekromancer
Теги в верхнем регистре и атрибуты без кавычек.

Вполне себе правильный HTML.

Nekromancer 26.03.2010 12:33

Не надо сейчас вредничать :) Разве вы пишите такой html? С точки зрения html он может и правильный, а с точки зрения современного написания кода нет.

Kolyaj 26.03.2010 12:41

Что такое современное написание кода? Есть стандарты, даже как минимум два: HTML и XHTML. В XHTML innerHTML вообще нет, остаётся один. По стандарту HTML всё нормально. Firefox, кстати, как минимум удаляет / у одиночных тегов, у оперы теги тоже в верхнем регистре.

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

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

subzey 26.03.2010 13:03

Цитата:

Сообщение от Aetae
взять innerHTML и его просеять регэкспом

при этом Вы потеряете обработчики событий, свойства объектов DOM и ссылки на эти объекты.

subzey 26.03.2010 13:10

Кстати, рискну, Вам нужно именно удалять эти теги, или достаточно сделать их незаметными?

<style type="text/css">
strong {font: inherit}
</style>

<h1>Продажа яваскрипта оптом.</h1> 
  
<p>Наша компания занимает оптовыми <strong>поставками яваскрипта</strong> в отдаленные горные аулы.</p> 
<p>Наш <strong>яваскрипт</strong> — самый <strong>качественный яваскрипт</strong> на рынке <strong>яваскрипта</strong>!</p>


(Ох уж, это тёмно-серое СЕО!..)


Часовой пояс GMT +3, время: 19:33.