1. JavaScript / Говнокод #15952

    +153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    // обработка наведения/убирания мышки на тултипы и ссылки
    $("a.popup-link").live("mouseenter", function(event) {
        var id = parseInt($(this).text().replace(">>", ""));
        $(window).data("currentTooltip", id);
        showTooltip(this, id);
    });
    
    $("a.popup-link").live("mouseleave", function(event) {
        $(window).data("currentTooltip", null);
        scheduleTooltipClose();
    });
    
    $("div.comment-tooltip").live("mouseover", function(event) {
        if (!$(event.target).hasClass("popup-link")) {
            $(window).data("currentTooltip", $(this).data("id"));
        }
    });
    
    $("div.comment-tooltip").live("mouseleave", function(event) {
        $(window).data("currentTooltip", null);
        scheduleTooltipClose();
    });

    https://github.com/bormand/govnokod-board

    Превращаем уютненький форум в уютненькую борду (скрипт для greasemonkey).

    P.S. На ГК стоит жквери 1.4, поэтому live() вместо on().

    Запостил: bormand, 09 Мая 2014

    Комментарии (152) RSS

    • показать все, что скрытоSEO коммент.
      Ответить
    • показать все, что скрытоТестовый коммент на верхнем уровне.
      Ответить
    • показать все, что скрытоПечально, что onclick ссылки "ответить" потерян. По крайней мере в хроме.
      Ответить
    • показать все, что скрытолол, обнаружена некроссбраузерность сортировки (0.0.4)
      в firefox всё логично, в chrome в 15936 первый коммент - http://govnokod.ru/15936#comment231593
      Ответить
    • >Превращаем уютненький форум в уютненькую борду
      Но зачем? Тут и так феноменальный, как для мелкофорума, наплыв рака за последний год.
      Edit: Хотя забавно.
      Ответить
      • показать все, что скрыто> Но зачем?
        Читать удобнее - последние комменты внизу треда, а не рассеяны по дереву.
        Ответить
        • > последние комменты внизу треда, а не рассеяны по дереву.
          А. Сортировки не заметил, потому что внизу отписался :)
          Ну это интересно.
          Вот говноподсветка цитирований:
          $('span.comment-text').each(function(i,e){
             var a=  e.innerText.split('\n'); m=0;
             for (var j=0;j<a.length;++j){ 
                if (0==a[j].indexOf('>')) { a[j]='<i>'+a[j]+'</i>'; m=1; }
             }
             if (m) $(e).html( a.join('<br/>') );
          })
          Ответить
        • Пофиксил
          $('span.comment-text').each(function(i,e){
             var a=  $(e).html().split('<br>'); m=0;
             for (var j=0;j<a.length;++j){ 
                if (0==a[j].indexOf('&gt;')) { a[j]='<span class="quote">'+a[j]+'</span>'; m=1; }
             }
             if (m) $(e).html( a.join('<br>') );
          })
          $('span.quote').css({'background': '#F9F9F9','border': 'solid #EEE','border-width': '1px','padding':'2px', 'padding-top':'6px','padding-bottom':'7px','display': 'block'})
          Ответить
    • показать все, что скрыто[[email protected]] ReferenceError: $ is not defined

      Firefox + skriptish
      Ответить
      • показать все, что скрытоБлин, где ты его тестировал? В начале нужно достать $, смотри в других скриптах как. Еще стоит указать совместимость.
        Ответить
        • Но... шкриптиш - это ж лисьей обезьяны кусок, а в ней всё работало. Интересно, однако.
          Ответить
        • > В начале нужно достать $, смотри в других скриптах как.
          Под обезьянами в режиме grant none скрипт исполняется без песочницы. Поэтому там и $ на месте, и все остальное. И никаких потенциально опасных unsafeWindow не надо юзать (вдруг сайт мне вместо jQuery подсунет свою хуйню, которую я сдуру выполню с правами юзерскрипта?).

          > Еще стоит указать совместимость.
          Как?
          Ответить
          • показать все, что скрытоP.S. Ну я попозже посмотрю че за шкриптиш и че ему нужно для работы.
            Ответить
          • показать все, что скрыто>И никаких потенциально опасных unsafeWindow не надо юзать (вдруг сайт мне вместо jQuery подсунет свою хуйню, которую я сдуру выполню с правами юзерскрипта?).
            Так ты по любому юзаешь jquery юзаешь со страницы. А что в правах юзерскрипта особенного?
            Ответить
            • показать все, что скрыто> А что в правах юзерскрипта особенного?
              Да в принципе ничего. Я думал, что настройки придется сохранять в GM_set, но localStorage оказался удобней.
              Ответить
        • показать все, что скрытоБыстрофикс для шкриптиша:
          -// @grant none
          +// @grant unsafeWindow
          
          +$ = unsafeWindow.$;
          Ответить
          • показать все, что скрыто
            -window.comments.postForm = function(formElem) {
            +unsafeWindow.comments.postForm = function(formElem) {
            Ответить
          • показать все, что скрытоДык закоммить, ёба.

            Блин, вообще не работает и ошибку не выдает.
            Ответить
            • показать все, что скрыто> Дык закоммить, ёба.
              Закоммитил.

              > Блин, вообще не работает и ошибку не выдает.
              У 0.0.7+ менюха с режимами в правом верхнем углу, там где кабинка. По дефолту все галки сняты. Мож поэтому?
              Ответить
              • показать все, что скрытоБлин, хоть бы хелп на 2 строчки написал. Теперь все работает.

                А что там было с $? Где-то переменные со страницы текут в юзерскрипт и наоборот?

                Как настройки делал? Инъекцией в страницу? А как оно через GM_ выглядит?
                Ответить
                • > Где-то переменные со страницы текут в юзерскрипт и наоборот?
                  Ну в тамперманки и гризманки если делаешь grant none, то оно не запускает песочницу вообще, и скрипт работает прямо на настоящем window. Вот $ и был доступен. А у скриптиша, походу, даже при grant none песочница работает, поэтому там без unsafeWindow никак не добраться до $.

                  > Блин, хоть бы хелп на 2 строчки написал
                  Да, надо бы замутить ридми.

                  > Как настройки делал? Инъекцией в страницу?
                  Да. Почитай в коде createConfigDialog(), там добавляются чекбоксы в цикле.

                  > А как оно через GM_ выглядит?
                  GM_set() и GM_get() вроде бы. Но раз через localStorage.setItem() пашет - ну их нафиг.
                  Ответить
                  • показать все, что скрыто>Ну в тамперманки и гризманки если делаешь grant none, то оно не запускает песочницу вообще, и скрипт работает прямо на настоящем window.
                    То есть, читает скоп из страницы? А пишет как? Нахуй, нахуй. Лучше новый создать, а то рнр какой-то получится.

                    А через GM хуйню можно окно с настройками вывести, только не внедряясь в страницу?
                    Ответить
                    • показать все, что скрытоХватит флудить, имейте совесть.
                      Ответить
                    • > То есть, читает скоп из страницы?
                      И читает и пишет. У жс есть global object, и на страничках им является window. Все, что не var и не свойство какого-то объекта улетает в этот global object.

                      > А через GM хуйню можно окно с настройками вывести, только не внедряясь в страницу?
                      Х.з. Расширения точно могут. Но GM скриптам таких прав не дают, поэтому, скорее всего, хуй.
                      Ответить
                      • показать все, что скрытоОднозначно нахуй.

                        >Но GM скриптам таких прав не дают,
                        Каких прав? Я про GM_ функции.
                        Ответить
                        • > Каких прав
                          Ну на создание окошек вне страницы.

                          А в штатной морде только exclude и include можно поменять.
                          Ответить
                          • показать все, что скрытоТак функций для окна настроек в GM_ нет?
                            Ответить
                            • Есть какой-то доп.скрипт для этого. А если настройки невелики, то GM_registerMenuCommand()+input()/confirm()
                              Ответить
                              • А что они делают?
                                Ответить
                                • GM_registerMenuCommand() создаёт подпункт в менюшке Гризманки - Команды скриптов. По клику вызывается твоя функция, без параметров.

                                  А input() и confirm() - стандартные JS функции для ввода строки и запроса подтверждения (всё через модальные окна).
                                  Ответить
                  • показать все, что скрытоХватит флудить, имейте совесть.
                    Ответить
    • показать все, что скрытоТестовый top-level коммент.

      UPD: И его правка.
      Ответить
    • показать все, что скрытоТестовый top-level коммент.
      Ответить
    • показать все, что скрытоТестовый top-level коммент.
      Ответить
    • показать все, что скрытои что оно делает?
      Ответить
      • Ворует пароли от говнокода.

        А в качестве побочного эффекта показывает говнокодик вот так: http://rghost.ru/55048649.view
        Ответить
        • Чёрт, надо пароль сменить. Хотя, уже наверно поздно.
          Ответить
        • Борманд в зюзю додвачевался. Не ожидал. Небось ещё и аниме смотрит параллельно с компилянием ведра. Окончательно катится по наклонной.
          Ответить
    • показать все, что скрытоДобавь туда сажу на комменты, аккаунты и темы. Добавь сворачивание (фолдинг). Добавь генерацию щёлкающихся ссылок. Замену ссылок изображениями. В последнем случае вообще имейджборда получится. Я даже себе это поставлю. Пох даже если пароль украдёт и минусовать врагов борманда начнет.
      Ответить
      • > Добавь туда сажу на комменты, аккаунты и темы.
        Дык тут поддержка со стороны сервера нужна, чтобы он в сток не добавлял сажные комменты... Или я туплю?

        > Замену ссылок изображениями
        Если руки дойдут до localStorage'а и простенького окошка с галочками - запилю.

        > Добавь генерацию щёлкающихся ссылок.
        Это всяко сделаю.

        А еще я мечтаю о кнопке "Moar comments!", которая аяксом загрузит новые комменты с сервера и подсветит их желтым. Я джва года ждал такую фичу.
        Ответить
      • >Замену ссылок изображениями.
        Не нужно, так пользователь хоть смотрит по каким ссылкам ходит. Да и пилится за 5 минут.
        Проще приобрести премиум-аккаунт.
        Доступеы:
        - рабочие ссылки
        - разные способы подсветки кода
        - увеличенное до суток время редактирования комментария
        - возможность писать личные сообщения владельцам других улучшенных аккаунтов
        - персональные языковые разделы, теги, настраиваемые как фильтры в почте
        - можно крепить картинки к говнокоду (возможности как в АиБ http://govnokod.ru/5555)
        - игнор-лист неугодных пользователей и отсеивание малолетних долбоёбов
        - rss стока
        - и наконец возможность писать в тред сообщения, видимые только владельцам других улучшенных аккаунтов

        Просмотр данного текста доступен только владельцам премиум-аккаунтов.
        Ответить
        • показать все, что скрыто> Просмотр данного текста доступен только владельцам премиум-аккаунтов.
          Да ну?
          Ответить
        • > игнор-лист неугодных пользователей и отсеивание малолетних долбоёбов
          Не пожалел денег, купил премиум акк. Удобно: http://rghost.ru/55074052.view
          Ответить
      • показать все, что скрыто> генерацию щёлкающихся ссылок
        Ну в общем-то работает в 0.0.9. Правда надо еще на 30 раз перечитать код их генерации, а то вдруг какой-нибудь XSS смогут замутить на их основе... Мало ли...

        P.S. Настроечная менюшка в правом верхнем углу, по клику в "привет $name" (если залогинен) или "войти в говнокод" (если разлогинен).
        Ответить
      • показать все, что скрыто>Добавь сворачивание (фолдинг).
        Пи, это ты?
        Ответить
        • >> Добавь сворачивание (фолдинг).
          > Пи, это ты?
          Это из темы про IDE для жабы?
          Ответить
          • Добавь ещё автопоказаволку комментов. Мне например она нужна чтобы показывать комменты борми ^_^
            Ответить
            • Поставь галку "без рейтинга", она заодно раскрывает все спойлеры.
              Ответить
              • Лучше бы отдельно сделать.
                Ответить
                • > Лучше бы отдельно сделать.
                  Ага, так удобней. Переделал.

                  > Все - анонимы
                  И это тоже. Спасибо.
                  Ответить
                  • "Без спойлеров" стоило бы переименовать, скажем, в "раскрывать все коменты" или "раскрывать заминусованные коменты". Окно настроек стоит закрывать по клику за его пределами (так ведь оно было в оригинале?)

                    "Ответы:" - слишком большой шрифт.

                    апдейт скрипта почему-то не работает.
                    Ответить
                    • > апдейт скрипта почему-то не работает.
                      Потому что update url не прописан в скрипте. Да и, имхо, нефиг, пускай народ привыкает читать скрипты перед установкой. Вдруг я ебанусь или мою учетку ломанут, и скрипт начнет делать что-то злое...

                      > "Ответы:" - слишком большой шрифт.
                      Ага, такой же как в тексте коммента. А надо как в шапке, поправим.

                      > Окно настроек стоит закрывать по клику за его пределами (так ведь оно было в оригинале?)
                      Не было.
                      Ответить
                      • > Вдруг я ебанусь
                        Продумывает вообще всё. Настоящий программист. Говорят те кто продумывают всё настолько качественно - наиболее подвержены к этой стрёмной ситуации.
                        Ответить
                      • Апдейт ручной же.

                        Список ботов сделай многострочный со скроллом, если надо.

                        Две кнопки редактировать. Кнопка редактировать появляется даже на старых коментах. Сделай редактирование по ctrl+пробел. Коменты ботов убиваются, даже если на них есть ответы неботов.
                        Ответить
                        • > Список ботов сделай многострочный со скроллом, если надо.
                          Лень... Вот придут боты - сделаю.
                          Ответить
                        • > Кнопка редактировать появляется даже на старых коментах.
                          Сможешь воспроизвести? У меня один раз такое вылезло, потом не появлялось. Так и не смог разобраться с причиной.

                          > Коменты ботов убиваются, даже если на них есть ответы неботов.
                          By design. Хотя можно запилить еще одну галочку.
                          Ответить
                        • > Сделай редактирование по ctrl+пробел.
                          А как выбирать пост, который надо редактировать по этому хоткею?
                          Ответить
                      • > Потому что update url не прописан в скрипте. Да и, имхо, нефиг, пускай народ привыкает читать скрипты перед установкой. Вдруг я ебанусь или мою учетку ломанут, и скрипт начнет делать что-то злое...

                        > и скрипт начнет делать что-то злое...
                        Если не устанавливать всякий мусор в @updateURL и @downloadURL.

                        Запустив сегодня Firefox, увидел радостное "скрипт обновлён". Потом посмотрел в хроме, а там 8 дней назад скрипт сам обновился.

                        http://www.greasespot.net/2012/02/automatic-script-updates-come-to.html
                        In the 0.9.18 release, Greasemonkey is now checking for, and installing, updated versions of user scripts by default.
                        ...
                        If @updateURL or @downloadURL are not provided, the URL that the script was downloaded from is used instead. If the @downloadURL is not provided and the install URL is not known, updates will never be applied.

                        А в Tampermonkey в поле "обновить URL" (привет переводчику) стоит https://raw.githubusercontent.com/bormand/govnokod-board/master/board.user.js
                        Ответить
    • Ответить
    • Встречаем версию 0.0.14 - теперь ссылка "редактировать" не пропадает после редактирования, и не надо жать F5 чтобы поправить текст еще разок :)
      Ответить
      • Как твой адвокат, я бы посоветовал менять мажорную версию и гнаться за мозиллой.
        Ответить
        • > менять мажорную версию
          Мне стыдно это релизить и называть мажорной версией. Тут же почти ничего интересного не реализовано...

          P.S. Версия 0.0.15. Выпиливает долбоёбов ботов под корень, не оставляя их постов, комментов, и даже ответов других людей на их комменты.
          Ответить
          • Оппа, конкурент :)
            Как жертв задаешь, списком или регэкспом? Какие варианты выпиливания?
            Вообще если хочешь, можешь утащить кусок моего скрипта для этих целей, чтоб самому не писать.
            Ответить
            • Банальный список. Вариантов два - не выпиливать и выпиливать ;)

              Да и сейчас ботов нет, не хочется сильно фокусироваться на этом. Пусть пока будет набросок, с атакой он вполне справится.

              Сейчас задачка повеселее есть - не терять текст при ошибке аякс отправки/редактирования.
              Ответить
            • А есть возможность раскрывать комментарии тех, кто не попал в чёрный список? (http://govnokod.ru/13321#comment230927)
              Ответить
              • Есть. Галочка "показать все, что скрыто" в меню.
                Ответить
                • http://rghost.ru/55106280.view
                  Выходит, редактировать можно только те комментарии, пароли учёток авторов которых были сворованы? Мда, негусто.

                  > Галочка "показать все, что скрыто"
                  А можно ботов не выпиливать, а просто не трогать их комментарии, в то время как заминусованные адекваты будут открываться?
                  Ответить
                  • И, раз уж скрипт вбирает в себя каждый день всё больше возможностей, может ещё некоторые идеи из скрипта WGH сюда добавить? Из важного там была возможность ограничить комментарии упоротых по высоте.

                    Или это к Vindicarу... Там главное добавить группу "остальные" и ограничивать по высоте, если это ещё не реализовано.
                    Ответить
                    • Да я пока не хочу про упоротых заморачиваться - на следующей волне допилим.

                      Сейчас более насущные проблемы есть.
                      Ответить
                    • Ограничить по высоте? Гм. Ну могу попробовать.
                      Ответить
                      • И группу "остальные" запилите, если можно, если её ещё нет.
                        Ответить
                        • Запилил, вот только userscripts.org лежит походу.
                          Пока выложил сюда: http://pastebin.com/H69djSVs
                          Ответить
                          • Реализуется поведение, о котором я мечтал. Спасибо большое!
                            Ответить
                          • Как-то много у Вас стилей... я ожидал только overflow-y: auto; max-height: N px; С ними всё становится хорошо. (Правда, запускаю я под неподдерживаемым браузером)
                            http://rghost.ru/55137076.view
                            Ответить
                            • Остальные стили для остальных вещей. =)
                              А вот про overflow-y: auto я не подумал, сейчас попробую.
                              Ответить
                              • > Остальные стили для остальных вещей. =)
                                Это я понял. Просто, когда я увидел абсолютно все комментарии упоротых по 200 пикселей (в том числе и скрытые), а потом посмотрел в CSS, установка height показалась мне лишней.
                                Ответить
                          • > userscripts.org лежит походу
                            Недавно подписался у них на тему "Error 503 Service Unavailable" (когда ещё только скачивать скрипты нельзя было). 11 часов назад пришло уведомление о новом ответе к теме. Решил открыть сейчас - а не открывается.
                            Ответить
                            • cleaned
                              Ответить
                            • Час назад пришло уведомление о новом ответе, пока меня не было. Но userscripts.org сейчас не открывается.
                              Ответить
      • Сделай возможность скопировать текст, если время редактирование вышло.
        Ответить
        • > если время редактирование вышло
          И если application error : debug mode is off или как там его. Сделаю, самого уже заебали эти косяки.
          Ответить
    • Кстати, прыщелис обновился, стал обтекаемым и наверняка стал еще больше жрать.
      Ответить
      • > Кстати, прыщелис обновился, стал обтекаемым
        Да давно уже... Недели две назад дизайн сменился,может и больше уже.
        Ответить
        • >> стал обтекаемым
          хромофокс

          Эх, куда-то дели панель расширений, а на ней у меня была кнопка QuickProxy, которой я включал/выключал прокси.
          Ответить
          • > Эх, куда-то дели панель расширений, а на ней у меня была кнопка QuickProxy, которой я включал/выключал прокси.
            Судя по тому, что гризманки повешалось там же где и другие кнопки, походу они все спихали в кучу. Попробуй поискать эту кнопку в менюхе в углу. Или дополнение выключить и включить...
            Ответить
            • В углу не нашёл, даже удалил-поставил - фиг знает, где кнопка.
              В итоге установил Toggle Proxy и перетащил кнопку из дополнительных инструментов - работает.
              Ответить
          • >хромофокс
            А то. Жалко, потребление памяти и проца вкладками не показывает.

            >Эх, куда-то дели панель расширений,
            Как, совсем??? Ну пидарасы.
            Ответить
      • Я уже серьёзно сомневаюсь в том, что мне стоит на него переходить. Он выглядит как говно, и настраивается примерно похожим образом. Я так и не смог найти способа, как сделать классические стрелочки вперёд-назад, плюнул и снёс к чертям.
        Я джва года сидел на третьей версии и перешёл сразу на, гм, десятую?
        Ответить
        • Classic Theme Restorer позволяет сделать. Но да, тема по умолчанию это ппц.
          Ответить
          • > Но да, тема по умолчанию это ппц.
            В линупсах нормальная. А на виртуалке на XP попробовал - какой-то вырвиглазный пиздец.
            Ответить
      • Бляяя, что это за синяя хуйня с рваными краями вверху?
        Ответить
      • Classic Theme Restorer спасёт крестного отца русского говнокода!
        Поставил сразу после обновления. Чуть покопаться в настройках, и можно вернуть всё как было.
        Бонусом возможность менять цвет кнопки меню в левом верхнем углу - удобно если запущено несколько профилей.
        Ответить
    • >Тест

      Сделаешь выделение цитат? Вон пи вверху код выложил.
      Ответить
      • > Сделаешь выделение цитат? Вон пи вверху код выложил.
        Можно, записал в todo. Только стиль им поправить надо, больно уж они неприметные.
        Ответить
        • >Только стиль им поправить надо, больно уж они неприметные.
          Теперь работает и на стоке:
          $('span.comment-text,div.entry-comment').each(function(i,e){
          	   var a=  $(e).html().split('<br>'); m=0;
          	   for (var j=0;j<a.length;++j){ 
          		  if (0==a[j].indexOf('>')) { a[j]='<span class="quote">'+a[j]+'</span>'; m=1; }
          	   }
          	   if (m) $(e).html( a.join('<br>') );
          	})
          	$('span.quote').css({
          		'background': '#F9F9E0','border': 'solid #EEE','border-width': '1px'
          		,'display': 'block', 'padding':'2px','border-radius': '8px',
          	});
          Ответить
    • Ответить
    • ctrl-enter
      Ответить
      • фыв

        ктрл+ентер не работает
        Ответить
        • ctrl-enter

          Да че за херня, у меня страница перезагружается после редактирования по ктрл-энтер.

          UPD: И даже если просто сделать trigger("click") или click() сраной кнопке "Отредактировать комментарий".
          Ответить
          • http://bugs.jquery.com/ticket/5695
            Пофиксено в 1.4.1 (на ГК - 1.4.0).

            Страйко, блеать, будь мужиком, обнови жквери!

            P.S. Придется все-таки цеплять новую жкверу с какого-нибудь CDN через noConflict()... Ну или обработчик полностью себе копипастить, а старый отцеплять.
            Ответить
            • Время загрузки страницы это не уменьшит.

              Может, написать свой прокси-сервис, который будет брать страницу с гк, парсить его и отдавать как надо? Типо того, что написал вася.

              Что характерно, коды анонимба этому мудаку прибить времени хватило.
              Ответить
    • А такое нормально линкифицируется?

      http://govnokod.ru/15952

      В общем вот.
      javascript: void($("p.description,span.comment-text,div.entry-comment").each(function(i,e) {
      var html=e.innerHTML , r = /http[\S]+/ , m = r.exec(html) ;
      if (m) e.innerHTML=html.replace(r, m[0].link(r.exec(e.textContent)[0])); })); void($("div.entry-content:contains('http:')").each(functio n(i,e) { var text=e.textContent , m = /http:[\S]+/.exec(text)[0] ; if (m)$(e).append($(m.link(m))); }))
      Ответить
    • http://govnokod.ru/15952
      Ответить
    • Предложение.
      На ГК показывается время "с плавающим питухом": только что, 5 минут назад, 6 дней назад. Это, конечно, хорошо, но когда два комментария написаны 5 дней назад, непонятна разница между ними. Предлагается подписывать к ответам относительное время (относительно родителя и/или брата).

      Например: "6 дней назад (через 25 минут)"
      Ответить
      • Мышь наведи и будет щастье.
        Ответить
        • Не, две строки вида "2014-05-11T20:20:08+04:00" и "2014-05-11T20:25:23+04:00" - это не так очевидно, как "через 5 минут". Это много букв. Пусть компьютер посчитает.
          Ответить
          • Ну на форумах у тебя такой будапешт не возникал?
            Ответить
            • Я кроме ГК мало где бываю/бывал, потому это меня всегда мало волновало.
              Хотя, относительное время где-то видел мельком.
              Ответить
    • ▌─────────────────────────▐█─────▐
      ▌────▄──────────────────▄█▓█▌────▐
      ▌───▐██▄───────────────▄▓░░▓▓────▐
      ▌───▐█░██▓────────────▓▓░░░▓▌────▐
      ▌───▐█▌░▓██──────────█▓░░░░▓─────▐
      ▌────▓█▌░░▓█▄███████▄███▓░▓█─────▐
      ▌────▓██▌░▓██░░░░░░░░░░▓█░▓▌─────▐
      ▌─────▓█████░░░░░░░░░░░░▓██──────▐
      ▌─────▓██▓░░░░░░░░░░░░░░░▓█──────▐
      ▌─────▐█▓░░░░░░█▓░░▓█░░░░▓█▌─────▐
      ▌─────▓█▌░▓█▓▓██▓░█▓▓▓▓▓░▓█▌─────▐
      ▌─────▓▓░▓██████▓░▓███▓▓▌░█▓─────▐
      ▌────▐▓▓░█▄▐▓▌█▓░░▓█▐▓▌▄▓░██─────▐
      ▌────▓█▓░▓█▄▄▄█▓░░▓█▄▄▄█▓░██▌────▐
      ▌────▓█▌░▓█████▓░░░▓███▓▀░▓█▓────▐
      ▌───▐▓█░░░▀▓██▀░░░░░─▀▓▀░░▓█▓────▐
      ▌───▓██░░░░░░░░▀▄▄▄▄▀░░░░░░▓▓────▐
      ▌───▓█▌░░░░░░░░░░▐▌░░░░░░░░▓▓▌───▐
      ▌───▓█░░░░░░░░░▄▀▀▀▀▄░░░░░░░█▓───▐
      ▌──▐█▌░░░░░░░░▀░░░░░░▀░░░░░░█▓▌──▐
      ▌──▓█░░░░░░░░░░░░░░░░░░░░░░░██▓──▐
      ▌──▓█░░░░░░░░░░░░░░░░░░░░░░░▓█▓──▐
      ▌──██░░░░░░░░░░░░░░░░░░░░░░░░█▓──▐
      ▌──█▌░░░░░░░░░░░░░░░░░░░░░░░░▐▓▌─▐
      ▌─▐▓░░░░░░░░░░░░░░░░░░░░░░░░░░█▓─▐
      ▌─█▓░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓─▐
      ▌─█▓░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▌▐
      ▌▐█▓░░░░░░░░░░░░░░░░░░░░░░░░░░░██▐
      ▌█▓▌░░░░░░░░░░░░░░░░░░░░░░░░░░░▓█▐
      Ответить
    • Вообще вопрос такой: а стоит ли делать комбайн? Может, лучше разбить на несколько скриптов? Один фильтрует, второй марафет наводит, третий обновления страницы проверяет.
      Ответить
    • Кругом лисофаги :( Я уже смирился с тем, что скрипт Vindicar'а без модификации работает только там, но ёще и bormand идёт в этом направлении, используя флаги в String.prototype.replace.
      - var regex = /(https?:\/\/([a-zA-Z0-9%_=#\?\.\+\/-]|&)+)/;
      + var regex = /https?:\/\/([a-zA-Z0-9%_=#\?\.\+\/-]|&)+/g;
      
      - comment = comment.replace(regex, function (match) {
      -     return "<a href='" + match + "'>" + match + "</a>";
      - }, "g");
      + comment = comment.replace(regex, '<a href="$&">$&</a>');

      Заодно можно снять пару скобок с регулярного выражения (match даже в replace(function(match){}) - нулевая группа) и убрать функцию.

      Во славу Царю: http://jsperf.com/string-prototype-replace
      Ответить
      • Как будто ты не знал, что еретики должны страдатьподдержка кроссплатформенности - унылое дело.
        Ответить
      • > Кругом лисофаги :(
        Спасибо, закоммитил фикс.

        > поддержка кроссплатформенности - унылое дело
        +1. Мой опыт во фронтенде ≈ 0. Поэтому мне по каждой функции надо смотреть на MDN ее совместимость и особенности... Как-то лениво это делать для just for fun проекта. Хотя этот replace я именно там и смотрел, да вот не обратил внимания на "Note: The flags argument does not work in v8 Core (Chrome and NodeJs)".

        Да и один хрен мой хайлайтер кривой - не понимает длинноссылок, перемежающихся с [i][/i] (они бьются на несколько спанов).
        Ответить
        • А тут даже стоит восклицательный знак возле аргумента :)
          https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/replace

          "/ru/docs". Какой прекрасный перевод на русский. Без потери смысла.
          Ответить
          • > А тут даже стоит восклицательный знак возле аргумента :)
            Да кто ж на него обращает внимание? :)
            Ответить
    • patch
      // вставляем ЧИТАТЬ ДАЛЕЕ >>>
      -$(".entry-comment").each(function() {
      +$(".entry-comment").each(function(i,e) {
      +  e.innerHTML=e.innerHTML.replace(/&nbsp;/g,' ');
      })
      Ответить

    Добавить комментарий