Траблы в Опере
Как то необходимо было распарсить ссылки на смайлики в коде страницы юзера и убрать повторения
Смайлов была масса: Попытался сделать парсинг через 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 |
Чё должно быть и какой эффект?
|
нифига не понял если честно
|
Цитата:
Вот скрин как должно выглядеть: ![]() А вот как выглядит в Опере: ![]() |
Ненавижу тестовые сайты на бесплатных хостингах и людей, которые их делают недолюбливаю.
А ещё вёрстку сначала нормальную сделай! Где у тебя открывается тег textarea? Ps: я такого количества открывающих div никогда в жизни не видывал. А тестовые примеры нужно делать маленькими. |
Gozar,
я урезал спецом до минума работоспособности -тегов техtarea - там нет - там контент тегов уже преобразован в текст сервером, как и на любом форуме ти пишешь <style> - но у тьву страница не схлопываецо, поскольку угловые скобки все преобразуются! Там техт - обычный текст,в коде много <img - угловые кавычки из текста в Опере при проходе парсера почему то преобразуются из < в < сам парсер post.innerHTML=post.innerHTML (*спецом убрал из него все replace |
post.innerHTML=post.innerHTML.replace(/</g, "<").replace(/>/g, ">"); :D |
Amphiluke,
Откройте исходник страницы |
Открыл. И?
|
Amphiluke,
В блоке код - нет тегов Страницу нун смотреть под Оперой( версии 11.6 и далее) и сравнивать в ином браузере |
Вы когда считываете свойство innerHTML, Opera, похоже, преобразует сущности в символы. Назначая обратно innerHTML, вы уже назначаете код с тегами. Поэтому я предложил вам этот вариант.
По крайней мере, когда я заменяю ваш код Цитата:
post.innerHTML=post.innerHTML.replace(/</g, "<") то код вываливается на страницу как есть и в opera тоже. |
Amphiluke,
Она не преобразует, пока колво символов менее 12тыщ, не преобразует если и сокращать кол-во текстового кода картинок не преобразует и во всех версиях до 11.6 Собственно интересно может кто зает механизм, ксать на многих сайтах есть подобный распарс контента в топиках Т.е если воткнуть много картиночные теги, скрыть спойлером, даб не привлекать сходу модеров, то можно запустить собственный скрипт для Oперников... |
Вы просто сами посмотрите перед тем как устанавливать свойство innerHTML:
alert(post.innerHTML.indexOf("<")); // -1 ! |
Amphiluke,
Я не о себе беспокоюсь - есть эффект, мну увидел, что подобной методой elem.innerHTML=elem.innerHTML.replace(что-то,на что-то) пользуюсь не ток я, сходил на оффсайт Opera, написал - два -три баг репорта -(февраль - воз и ныне там) ну пишу тут дабы знали |
Вышла Опера 12 Final - долгожданная финалка 12-й оперы.. качайте, читайте: http://my.opera.com/russian/blog/201...opera-12-final
|
devote,
Ксать там в 12 вродь исправлен баг с загрузкой шрифтов при русскоязычной папке установки оперы |
Цитата:
|
Ыыы :lol: А данный баг топика - остался
|
Цитата:
|
Часовой пояс GMT +3, время: 13:32. |