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)
Ответ на: комментарий от hor

Хм, хорошая идея. А то что превьюшки сделали до меня я не знал.

drull ★☆☆☆
() автор топика

запилите lor-js репо где-нибудь, pls

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

Ники, даты и т.д. я наоборот специально убрал, чтобы не засорять попап ненужной инфой.

msg.find('.sign').remove();
msg.find('.reply').remove();

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

Ники, даты и т.д. я наоборот специально убрал, чтобы не засорять попап ненужной инфой.

Так может мне захочется ответить на ответ который попапнет? И вообще знать, кто это такое умное там сказал.

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

Тогда как-то так:
$('div.title > a').each(function(idx,elem){
$(elem).mouseover(function(){
$.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>');
$('body').remove('.2ch_popup');
$('body').append(popup);
$('.2ch_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');
})
})
.mouseout(function(){setTimeout(function(){$('.2ch_popup').remove();}, 3000); })
});

Выглядит так: http://clip2net.com/clip/m160315/1359040829-clip-80kb.png

Пост отредактировал.

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

Подожди пока. Макс обещал сделать ЛОР-API. Тогда не придется по целой странице выкачивать.

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

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

Еще бы поиск получше сделали...

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

Мышкой выделяешь и вставляешь.

Я не добавляю, т.к. для этого надо целую страницу скачивать — нафиг. Тормозить будет жутко.

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

И да, в огнелисе этот селектор работает.

drull ★☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em
var tit = document.getElementsByClassName ("title");
for(i in tit)
    var a = tit[i].getElementsByTagName("a");
        for(j in a)
            a[j].onmouseover = …

Не проверял.

Кстати, я до этого и не глядел, что тут на onmouseover запихано, а не на onclick. Это же вообще адские тормоза будут!

А, еще: там вообще полная жопа в коде. Быдлокод какой-то, блин!

В общем, проще сделать так: в "невидимый" iframe подгружаешь нужную страницу, парсишь ее и выводишь нужное в div.

У меня так работает "фильтр трекера" и кнопочка "настучать".

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

Не надо эту дрянь подключать.

// еще не хватало каждый раз при загрузке странички ЛОРа качать чей-то быдлокод…

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

Да, mouseover и mouseenter как-то странно себя в ФФ ведут.

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