Форум » Скрипты кастомизации для форумов » Модификация тега MORE: разворачивать только свой текст, а не все в сообщении » Ответить

Модификация тега MORE: разворачивать только свой текст, а не все в сообщении

ТехнОкраТ: Если в сообщении много тегов more, то при попытке открыть какой-то один открываются все. Так происходит из-за того, что все скрываемые тегами more элементы помещаются в таблицы с одним и тем же id в пределах конкретного сообщения. Нажатие по ссылке "Скрытый текст" запускает функцию tabviz из библиотеки gb_forum.js и передаёт ей в качестве параметра id соответствующей таблицы. Функция tabviz ищет все таблицы с этим id, находит их и в зависимости от ситуации скрывает или показывает их. Со стороны пользователя может наблюдаться неудобство: при нажатии на один из "Скрытых текстов" в сообщении разворачиваются все "Скрытые тексты", из-за чего то, на что смотрел пользователь только что, может оказаться уже в другом месте страницы. Это затрудняет восприятие. Варианты выхода: 1. Со стороны сервера - давать каждому следующему more в сообщении новый id. 2. Со стороны админов форумов - добавить скрипт, который, по сути, будет делать то же самое: искать ссылки "Скрытый текст" и соответствующие им таблицы, и менять в них id, чтобы были разными в пределах одного сообщения. Первый вариант предпочтительнее, но пока его нет, можно воспользоваться вторым. Скрипт добавляется в HTML-низ после </HTML> [pre2] <!-- Модификация к тегу MORE: Начало --> <!-- Чтобы разворачивался тыкнутый Скрытый текст, а не все сразу --> <script> // регулярное выражение, ищущее отличительную черту ссылки "Скрытый текст" - // это значение параметра href равное 'javascript:tabviz(X);' , где Х - цифры var tabvizstr = /tabviz\(([0-9]+)\);/i; aArray = document.getElementsByTagName('a'); for (m=1; m<aArray.length; m++){ aCurr = aArray[m]; strMatch = tabvizstr.exec(aCurr.getAttribute('href')); if(strMatch != null){ MoreTagOldId = strMatch[1]; MoreTagNewId = strMatch[1]+m; tableCurr = aCurr.nextSibling.nextSibling; if (tableCurr.getAttribute('id') == MoreTagOldId) { aCurr.setAttribute('href', 'javascript:tabviz('+MoreTagNewId+');'); tableCurr.setAttribute('id', MoreTagNewId); } } } </script> <!-- Модификация к тегу MORE: Конец -->[/pre2]

Ответов - 2

kernel: test test1 test2

kernel: ИМХО, это скорее баг, чем фича. Поправил.



полная версия страницы