LINUX.ORG.RU
ФорумTalks

2ch-style LOR

 , ,


6

2

От нефиг делать сделал себе вот такой вот скриптик, которые выводит превьюшки комментов, на который был ответ, в двач-стайл:

// ==UserScript==
// @name       LOR 2ch-style
// @namespace  http://use.i.E.your.homepage/
// @version    0.1
// @description  enter something useful
// @match      http://www.linux.org.ru/*
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.js
// @copyright  2012+, You
// ==/UserScript==

(function () {
$('div.title > a').each(function(idx,elem){
    if($(elem).text() !== "комментарий")
        return;
    function processLink(lnk)
    {
        	msg = lnk.parents('article').find('.msg_body.message-w-userpic');
            popup = $('<div class="2ch_popup">' + msg.html() + '</div>');
            $('body').remove('.2ch_popup');
            
            $(popup).css('z-index', '9999')
                            .css('position', 'absolute')
                            .css('top', $(elem).offset().top+'px')
                            .css('left', ($(elem).offset().left+$(elem).width()+20)+'px')
                            .css('background-color','#101010')
                            .css('width', '600px')
                            .css('border-radius', '5px')
                            .css('padding', '5px')
                            .attr('rel', $(elem).attr('href'));
             $('body').append(popup);
    }
    $(elem).mouseover(function(){
        if($('#comments').find('a').filter(function(){return ($(this).text() === "Ссылка" && $(this).attr('href') == $(elem).attr('href')); }).length > 0)
        {
          processLink($('#comments').find('a').filter(function(){return ($(this).text() === "Ссылка" && $(this).attr('href') == $(elem).attr('href')); }));
          console.log('found');
          return false;
        }
        console.log('not found');
        if($('.2ch_popup').length > 0 && $('.2ch_popup').attr('rel') == $(this).attr('href'))
            return false;        
        $.ajax({type: "GET", url: $(this).attr('href')})
        .done(function(msg){
            msg = $(msg);
            msg = msg.find('a').filter(function(){return ($(this).text() === "Ссылка" && $(this).attr('href') == $(elem).attr('href')); });
            processLink(msg);
        })
    })
    .mouseout(function(){$('.2ch_popup').remove(); })
});
}());
Кому не лень, оформите пожалуйста как хромовское дополнение, а то я не умею. А еще лучше было бы это в lorcode-tools запилить. moscwich.

Нотариально заверенный скриншот: http://clip2net.com/clip/m160315/1359041431-clip-89kb.png

UPD. Пофиксил постоянную перезагрузку в ФФ.
UPD2. Если нужный коммент уже есть на странице - то показываем попап сразу, без аякса.
UPD3. Убрал раздражающие попапы, которые появляются при использовании lorcode tools.

★☆☆☆

Последнее исправление: drull (всего исправлений: 13)
Ответ на: комментарий от firestarter

И с нацполом было бы неплохо.

SjZ ★★★★★
()
Ответ на: комментарий от drull

Нужны полезные библиотеки. А эта — бесполезная.

Eddy_Em ☆☆☆☆☆
()

$('.2ch_popup')

Ужас-то какой! Завел бы динамический массив, в который и помещал эти свежесозданные блоки. А потом для удаления — прошелся по массиву с конца и поудалял все нафиг.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от drull

вот так надо.Сначала ставим стили, а потом только добавляем. А нето оно сначала под курсором появляется а потом сдвигается от этого и запускается события лишние.


$(popup).css('z-index', '9999')
.css('position', 'absolute')
.css('top', $(elem).offset().top+'px')
.css('left', ($(elem).offset().left+$(elem).width()+20)+'px')
.css('background-color','#101010')
.css('width', '600px')
.css('border-radius', '5px')
.css('padding', '5px')
.attr('rel', $(elem).attr('href'));
$('body').append(popup);

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

Ты прав. У меня машина сильная, так что я этого не заметил.

drull ★☆☆☆
() автор топика
Ответ на: комментарий от drull

Полтора десятка строк можно и на чистом жс написать без лишних зависимостей. И быдлокодить сложнее, врятли бы ты такой огород из функционалщины нагородил.

Kalashnikov ★★★
()
Ответ на: комментарий от Kalashnikov

врятли бы ты такой огород из функционалщины нагородил

Что там лишнего?

drull ★☆☆☆
() автор топика
Ответ на: комментарий от drull

А, тогда еще проще: переменная глобальная. А так ты каждый раз шукаешь по DOM-дереву, грузишь процессор лишней работой…

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Bad_ptr

Oh, shi!

Вот что значит — не просмотреть внимательно. Жуть!

Воткни ты этот CSS в stylish, или же зафигачь его в текстовую переменную и воткни как innerHTML объекта document.createElement ("style")…

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

или же зафигачь его в текстовую переменную и воткни как innerHTML

Зачем О_о? У тебя патологическая ненависть к удобным инструментам?

drull ★☆☆☆
() автор топика
Последнее исправление: drull (всего исправлений: 1)
Ответ на: комментарий от drull

У тебя патологическая ненависть к удобным инструментам?

Это не "удобный инструмент", а лишняя нагрузка на процессор. Нафиг такое счастье!

Вот так и получается, что каждые пару лет приходится из-за этих горе-"погромистов" апгрейд делать. Т.к. им, видите ли, не хочется ручками все по-человечески делать, они "библиотеками" пользуются…

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Дык, stylish-то все равно запущен. Без него — никуда.

Ну я как-то без него живу.

Т.к. им, видите ли, не хочется ручками все по-человечески делать, они «библиотеками» пользуются…

Не пользуйся С с его библиотеками, только асм, только хардкор!

drull ★☆☆☆
() автор топика
Ответ на: комментарий от drull

Ну я как-то без него живу

В принципе, у меня только для БХ и для ЛОРа правила (для БХ — чтобы «плюсики/минусики» было видно, иначе они невидимые, а для ЛОРа — чтобы приличное оформление было), их можно действительно в скрипт для засаленной обезьяны запихать. ХЗ, что выгоднее.

Не пользуйся С с его библиотеками, только асм, только хардкор!

Есть хорошие библиотеки, а есть — идиотские. Вот хорошими надо пользоваться, а говном — нет.

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

ИМХО два запущенных дополнения будут больше жрать, чем одно, на которое навесили дополнительные функции.

drull ★☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Ок, что тогда хорошая библиотека? Это библиотека которая облегчает написание кода, ускоряет разработку, уменьшает количество кода, причесывает его. jQuery именно этим и занимается.

drull ★☆☆☆
() автор топика
Ответ на: комментарий от drull

что тогда хорошая библиотека?

glibc, GSL, fftw3… Да много их.

библиотека которая облегчает написание кода, ускоряет разработку, уменьшает количество кода, причесывает его

Ты главное забыл: быстро работает! А если этого пункта нет, такая "библиотека" нафиг не нужна. Пусть ею поц пользуется.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от drull

где у тебя скрипты на jquery тормозят?

Везде. ЛОР тормозит, как и все, использующее эту дрянь. Там же 0 оптимизации!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от drull

Епт, где у тебя скрипты на jquery тормозят?

У него говнопровайдер с проксей, через которую этот jquery прогружается через раз.

fenris ★★★★★
()
Ответ на: комментарий от drull

Хренушки! Я апгрейд делал всего лишь года 2-3 назад!

Eddy_Em ☆☆☆☆☆
()

вот как-то так пока

// ==UserScript==
// @name        LOR_popup
// @namespace   http*://www.linux.org.ru/*
// @include     http*://www.linux.org.ru/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @version     1
// ==/UserScript==


$('div.title > a').each(function(idx,elem){
    $(elem).mouseover(function(){
        var popup = $('.2ch_popup');
        if(popup.length > 0 && $(popup).attr('rel') == $(this).attr('href')){
            if (popup[0].destroy_timer){
                clearTimeout(popup[0].destroy_timer);
                popup[0].destroy_timer = null;
            }
            return true;
        }

        $.ajax({type: "GET", url: $(this).attr('href')})
        .done(function(msg){
            msg = $(msg);
            msg = msg.find('a').filter(function(){return ($(this).text() === "Ссылка" && $(this).attr('href') == $(elem).attr('href')); }).parents('article').find('.msg_body.message-w-userpic');
            popup = $('<div class="2ch_popup">' + msg.html() + '</div>');
            popup.destroy_timer = null;
            $('body').remove('.2ch_popup');
            $(popup).css({'z-index'  : '9999'
                          , 'position' : 'absolute'
                          , 'top'      : $(elem).offset().top+'px'
                          , 'left'     : ($(elem).offset().left+$(elem).width()+120)+'px'
                          , 'width'    : '600px'
                          , 'padding'  : '5px'
                          , 'border-radius': '5px'
                          , 'background-color': '#101010'})
                .attr('rel', $(elem).attr('href'));
            $('body').append(popup);
        })
    })
    .mouseout(function(){
        var popup = $('.2ch_popup');
        if ( popup.length > 0 )
            popup[0].destroy_timer = setTimeout(function(){$(popup).remove();}, 2000);
    })
});
Bad_ptr ★★★★★
()
Ответ на: комментарий от Eddy_Em

Сейчас у меня примерно три прокси до провайдера.

Песец. Климат у вас хороший, но с таким интернетом жить невозможно.

drull ★☆☆☆
() автор топика
Ответ на: комментарий от drull

Дык, что ты хочешь-то? Ущелье ведь тупиковое, до Черкесска ~100км... Хорошо хоть оптику протянули, а то раньше вообще сидели на релейке + спутнике.

А проксей столько потому, что две из них — мои собственные.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Bad_ptr

И не надо на каждую ссылку подкачивать страницу: можно ведь проверить, нет ли на уже подкачанной этого!

Кстати, для тех, у кого быстрый интернет, подсказываю решение проблемы методом drull'а: подкачать страничку, получающуюся при нажатии кнопочки "показать удаленные". В этом случае на странице размещены все комментарии — т.е. один раз подкачал, а потом пользуйся себе.

Я таким образом думал было сделать "динамическую прокрутку" и подобный "предпросмотр", но узнав, что Макс API пилит, решил подождать.

Eddy_Em ☆☆☆☆☆
()

Внезапно, но работает.

Rosko
()
Ответ на: комментарий от Deleted

Я давным-давно заходил на него посмотреть что он из себя представляет и увидел эту фичу.

drull ★☆☆☆
() автор топика
Ответ на: комментарий от Bad_ptr

Тогда уже:

$(popup)
  .css('z-index', '9999')
  .css('position', 'absolute')
 // ...
  .appendTo('body');

Sectoid ★★★★★
()
Ответ на: комментарий от hor

hor

Ты уже третий, кто это сделал.

Запили лучше автообновление треда.

Вроде же было только с текущей страницы, а тут как я понял со всех.

Loki13 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.