|
OFF: Букмарклет для ссылок | ☑ | ||
---|---|---|---|---|
0
stonewolf
23.07.15
✎
14:24
|
Продолжение темы Букмарклет для ссылок Мисты.
В наличии: открытие ссылок с других страниц. Добавлено: вложенность ссылок, картинки, видео с тытуба, подсветка комментария. Тестил только на хроме. Выглядит вот так: http://imhocloud.com/images/2015/07/23/11174015.png |
|||
1
stonewolf
23.07.15
✎
14:24
|
javascript:(function() {
function replace(obj) { var tg = obj.target; var id = tg.innerText; var e = document.getElementById("message_" + id); if (e == undefined) { var t = cache[id]; if (t == undefined) t = get(id); } else /* со страницы */ { var euser = e.getElementsByClassName("registered-user")[0].innerText; var etextnode = e.getElementsByClassName("message-text")[0]; var etextsub = etextnode.getElementsByTagName("td"); var etext = (etextsub.length > 0 ? etextsub[0] : etextnode).innerText; var t = '<b>' + euser + '</b><br>' + etext + '<br>'; var t=t.replace(/\((\d+)\)/g,'(<a class="interlink">$1</a>)'); /* ссылки */ var re=/https?:\/\/(\S+)/ig; var t=t.replace(re,'<a href="$&">$&</a>') }; var prev=tg.previousSibling; var next=tg.nextSibling; next.nodeValue=next.nodeValue.substr(2); var d=document.createElement('div'); d.style.border='dashed 1px'; d.style.padding='5px'; d.style.backgroundColor='#f0f0f0'; d.innerHTML=t; d.onmouseover=highlight; d.onmouseout=lowlight; tg.parentElement.replaceChild(d,tg); var s=prev.nodeValue; prev.nodeValue=s.substr(0,s.length-1); update(); }; function highlight(e) { e.target.style.backgroundColor='#fffff0'; } function lowlight(e) { e.target.style.backgroundColor='#f0f0f0'; } topic = (/\d+(?=&*)/).exec(document.URL)[0]; cache = []; function get(id) { var req = new Subsys_JsHttpRequest_Js(); req.caching = false; req.open('POST', 'ajax_getmessage.php', false); req.send({k: 0,topic_id: topic,message_n: id,direction: 0}); var s = req.responseJS.message_html; var t = s.substr(s.search('<br>') + 4); var temp=document.createElement('div'); temp.innerHTML=t; var eUser=temp.childNodes[0]; var userName=eUser.innerText; temp.removeChild(eUser); t='<b>'+userName+'</b><br>'+temp.innerText.substr(2); t=t.replace(/\((\d+)\)/g,'(<a class="interlink">$1</a>)'); /* ссылки */ var re=/https?:\/\/(\S+)/i; t=t.replace(re,'<a href="$&">$&</a>') cache[id] = t; return t; } function setevents(m) { for (var i = 0; i < m.length; i++) { var e = m[i]; if (e.onmouseover != replace) { e.onmouseover = replace; } } }; function update() { var c = 'ссылки слева'; var m = document.getElementsByClassName("interlink"); setevents(m); var m = document.getElementsByClassName("extralink"); var del=[]; for(var i=0;i<m.length;i++) { var e=m[i]; var t=e.href; var l=m.length; /* картинки */ var re=/(\.jpe?g|\.png|\.gif)/i; var r=re.test(t); if(re.test(t)) { var img=document.createElement('img'); img.src=t; img.style.maxWidth='800px'; img.style.maxHeight='600px'; e.parentElement.insertBefore(img,e); del.push(e); } /* труба */ var re=/https?:\/\/(www\.)?youtube.com\//i; var q=t.search(re); if(q!=-1) { var yt=document.createElement('iframe'); yt.width='420'; yt.height='315'; var tr=t.replace(/https?:\S+watch\?v=(\S+)/,'$1'); yt.src='https://www.youtube.com/embed/'+tr; e.parentElement.insertBefore(yt,e); del.push(e); } } for(var i=0;i<del.length;i++)del[i].parentElement.removeChild(del[i]); }; update(); } )(); |
|||
2
Asmody
23.07.15
✎
14:30
|
(0) зачем делать букмарклет, если у нас есть личные скрипты?
|
|||
3
stonewolf
23.07.15
✎
14:31
|
(2) и так и сяк работает
|
|||
4
Asmody
23.07.15
✎
14:33
|
кроме того, миста использует jquery
|
|||
5
stonewolf
23.07.15
✎
14:36
|
(4) я догадался. Через функции мисты и тягает посты с других страниц.
|
|||
6
aka AMIGO
23.07.15
✎
14:50
|
(5)
![]() |
|||
7
stonewolf
23.07.15
✎
15:07
|
(6) Мне показалось более удобным видеть всё рядом с оригинальным постом. Особенно отслеживать длинные цепочки и множественные ответы, как в темах политоты. И кликать не надо, просто навестись. Кстати, ваш скрипт подтягивает посты с предыдущих страниц?
я ж не настаиваю. Просто выложил, вдруг кому пригодится. |
|||
8
aka AMIGO
23.07.15
✎
15:08
|
(7) виноват, ошибся, надо просто навести
|
|||
9
aka AMIGO
23.07.15
✎
15:08
|
+8 подтягивает
|
|||
10
aka AMIGO
23.07.15
✎
15:10
|
показалось более удобным видеть всё рядом с оригинальным постом
Перегрузка информацией на странице. Неудобочитаемо. |
|||
11
aka AMIGO
23.07.15
✎
15:13
|
Однако, решение довольно интересное :)
|
|||
12
stonewolf
23.07.15
✎
15:20
|
(10) Ну никто ведь не заставляет открывать больше, чем нужно.
<i>Неудобочитаемо</i> для этого есть подсветка. И вообще, на вкус и цвет все фломастеры разные. :) |
|||
13
ixijixi
23.07.15
✎
15:32
|
А как подключить-то?
|
|||
14
stonewolf
23.07.15
✎
15:42
|
(13)
Либо скопировать в адресную строку, либо установить в личные настройки - прочие - Персональный javascript |
|||
15
aka AMIGO
23.07.15
✎
15:43
|
||||
16
ixijixi
23.07.15
✎
15:51
|
(14) (15) Спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |