Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Траблы в Опере (https://javascript.ru/forum/offtopic/29069-trably-v-opere.html)

Deff 13.06.2012 20:08

Траблы в Опере
 
Как то необходимо было распарсить ссылки на смайлики в коде страницы юзера и убрать повторения
Смайлов была масса: Попытался сделать парсинг через innerHTML,

Наткнулся на трабл
Трабл во всех Операх начиная c 11.6

Код парс скрипта(сокращен до минимума
Код:
[HTML]<script>
/******** Парсер img ***********/

elm=document.getElementById("pun-main").getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content"){
var post=elm[x]
post.innerHTML=post.innerHTML
}
</script>


Эффект возникает при большом кол-ве картинок (общей длинной кода более 20 000знаков
После перепарса текст перепарсенного преобразуется в HTML

Скриншот:



Рабочий тест http://hostjs-mybb2011.narod.ru/opera11-6-Trabl.htm

Gozar 13.06.2012 20:53

Чё должно быть и какой эффект?

devote 13.06.2012 21:14

нифига не понял если честно

Deff 13.06.2012 21:24

Цитата:

Сообщение от devote
нифига не понял если честно

В блоке Код - Текст- при парсе через innerHTML и возврате на страницу , текст превращается в HTML код, начинают работать из текста скрипты, и остальные коды HTML
Вот скрин как должно выглядеть:


А вот как выглядит в Опере:

Gozar 13.06.2012 21:46

Ненавижу тестовые сайты на бесплатных хостингах и людей, которые их делают недолюбливаю.

А ещё вёрстку сначала нормальную сделай! Где у тебя открывается тег textarea?

Ps: я такого количества открывающих div никогда в жизни не видывал. А тестовые примеры нужно делать маленькими.

Deff 13.06.2012 21:52

Gozar,
я урезал спецом до минума работоспособности -тегов техtarea - там нет - там контент тегов уже преобразован в текст сервером, как и на любом форуме
ти пишешь
<style> - но у тьву страница не схлопываецо, поскольку угловые скобки все преобразуются!

Там техт - обычный текст,в коде много &lt;img - угловые кавычки из текста в Опере при проходе парсера почему то преобразуются из &lt; в <

сам парсер post.innerHTML=post.innerHTML (*спецом убрал из него все replace

Amphiluke 13.06.2012 22:08

post.innerHTML=post.innerHTML.replace(/</g, "&lt;").replace(/>/g, "&gt;");

:D

Deff 13.06.2012 22:11

Amphiluke,
Откройте исходник страницы

Amphiluke 13.06.2012 22:11

Открыл. И?

Deff 13.06.2012 22:15

Amphiluke,
В блоке код - нет тегов
Страницу нун смотреть под Оперой( версии 11.6 и далее) и сравнивать в ином браузере


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