robert пишет:В браузере гугль хром, сафари и файрфоксе, вот такая бяка при публикации длинной ссылки появляется (в ИЕ и Опере всё ок):
robert пишет:Глюк не исправляется, или я не там ищу?
yura3d пишет:В ближайшее время постараюсь разобраться
Собственно, разобрался. В результате получился новый вариант подсветки ссылок, в котором устранены все проблемы предыдущего. В частности, длинные ссылки теперь выводятся в сокращённом варианте (аналогично тому, как это сделано на форуме), поэтому их публикация не растянет слой с сообщениями вширь. Также обработка ссылок теперь выполняется в 1 проход (вместо предыдущих 2-ух) при помощи функции обратного вызова, в связи с чем существенно возросла скорость и гибкость системы подсветки ссылок в чате (например, в будущем к чату можно будет без проблем применить мод перехода по внешним ссылкам через редирект, а также добавить поддержку кириллицы в ссылках).
Установка подсветки ссылок в чате (Отобразить)Если Вы уже устанавливали
тестовую реализацию подсветки ссылок в чате, то для начала удалите её.
Затем откройте файл
modules/chat/javascript/chat_yura3d.js и найдите строку:
CODE:var messages, msg, now, online, tmp, last, scroll, scrolling, scroll_px, last_top, last_name;
и замените её строкой:
CODE:var messages, msg, now, online, tmp, last, scroll, scrolling, scroll_px, last_top, last_name, pcre_links;
Далее в этом же файле найдите строку:
и после неё разместите строки:
CODE: var url_params_range = String.fromCharCode(33) + '-' + String.fromCharCode(127) + '\\+';
pcre_links = new RegExp('(\\b|\\s|^)(((http|https|ftp)\\://|www\\.)([a-z0-9\\-]{1,64}\\.){1,3}[a-z]{2,6}(/[' + url_params_range + ']{1,512}|))(\\b|\\s|$)', 'ig');
Теперь найдите строки:
CODE:function update_chat() {
JsHttpRequest.query('jsloader.php?loader=chat', {action: 'update', last: last}, update, true);
setTimeout(update_chat, chat.update * 1000);
}
и после них разместите строки:
CODE:function links_processing() {
arguments[2] = arguments[2].replace(/\&\;/ig, '&');
link = (arguments[3] == 'www.') ? 'http://' + arguments[2] : arguments[2];
text = (arguments[2].length > 64) ? arguments[2].replace(/(.{32}).+(.{31})/, '$1...$2') : arguments[2];
return arguments[1] + '<a href="' + link + '" target="_blank">' + text + '</a>' + arguments[7];
}
И, наконец, найдите строку:
CODE: case 'msg': for (j = 0; j < smiles.length; j++)
и замените её строками:
CODE: case 'msg': span[i].innerHTML = span[i].innerHTML.replace(pcre_links, links_processing);
for (j = 0; j < smiles.length; j++)
Не забудьте после установки обновить кеш браузера (2 раза подряд Ctrl+R на странице с чатом).
Работу нового варианта подсветки ссылок Вы можете
протестировать в нашем чате.