Имя: Пароль:
LIFE
Жизнь форума
OFF: Букмарклет для ссылок Мисты.
0 stonewolf
 
28.02.13
11:16
1. ща скажу! 67% (2)
2. неплохо бы в основной код. 33% (1)
3. скрипач нинужен, фтопку! 0% (0)
4. буду пользовать как букмарклет. 0% (0)
Всего мнений: 3

Доброго времени суток, товарищи и граждане. От скуки на днях сваял г*внобукмарклет, который при наведении указателя на ссылку типа (1) и ссылок справа показывает над постом собсно текст из ссылки. Умеет подгружать посты с других страниц. Не умеет показывать текст из скрытых постов.
Кроме хрома ни на чём не проверял, т.к. делал себе.

пысы. Можно добавить на место урл в панель закладок. На яве не особо, посему за г*внокод сильно не пинайте. Если вставляете в адресную строку, проверьте, чтобы в начале не убралось "javascript:". Без логина посты с других страниц подгружать не будет.
1 stonewolf
 
28.02.13
11:16
(0)

javascript:void(
sw=new function()
{
   this.div=document.createElement('div');
   with(this.div.style)
   {
       position='absolute';
       backgroundColor='#d0d0d0';
   };

   this.show=function(obj)
   {
       var tg=obj.target;
       var id=tg.innerText;
       var e=document.getElementById("message_"+id);
       if(e==undefined)
       {
           var t=sw.cache[id];
           if(t==undefined)t=sw.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;
       };
       var isLeft=tg.className=='interlink';
       e2=tg.parentElement.tagName;
       var haslinks=tg.parentElement.tagName=='TD';
       sw.div.innerHTML=t;
       document.body.appendChild(sw.div);
       for(var i=0;i<(isLeft?(haslinks?7:3):8);i++)tg=tg.parentElement;
       var pos=sw.getOffset(tg);
       var w=document.body.clientWidth;
       with(sw.div.style)
       {
           verticalAlign='bottom';
           top=pos.top-sw.div.clientHeight;
           left=pos.left;
           width=e.clientWidth;
       }
   };

   this.hide=function(){sw.div.parentElement.removeChild(sw.div);};

   this.getOffset=function(elem)
   {
       var box = elem.getBoundingClientRect();
       var body = document.body;
       var docElem = document.documentElement;
       var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
       var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
       var clientTop = docElem.clientTop || body.clientTop || 0;
       var clientLeft = docElem.clientLeft || body.clientLeft || 0;
       var top  = box.top +  scrollTop - clientTop;
       var left = box.left + scrollLeft - clientLeft;
       return { top: Math.round(top), left: Math.round(left), width: box.width, height: box.height,
           right: Math.round(left+box.width), bottom: Math.round(top)+box.height };
   };

   this.topic=(/\d+(?=&)/).exec(document.URL)[0];

   this.update=function()
   {
       var c='ссылки слева';
       var m=document.getElementsByClassName("interlink");
       this.setevents(m);

       var c='ссылки справа';
       var m=document.getElementsByClassName("answer-link interlink");
       this.setevents(m);
       
   };
   this.setevents=function(m){for(var i=0;i<m.length;i++){var e=m[i];if(e.onmouseover==null){e.onmouseover=this.show;e.onmouseout=this.hide;}}};
   this.update();

   this.cache=[];

   this.get=function(id)
   {
       var req = new Subsys_JsHttpRequest_Js();req.caching = false;req.open('POST', 'ajax_getmessage.php', false);
       req.send({ k:0, topic_id:this.topic, message_n:id, direction:0});
       var s=req.responseJS.message_html;
       var r=s.substr(s.search('<br>')+4);
       this.cache[id]=r;
       return r;
   }
}
);
2 IamAlexy
 
28.02.13
11:17
кривые ссылки которые миста на предыдущие страницы делает твой скрипт понимает ?
3 Скользящий
 
28.02.13
11:20
Такой вроде давно уже существует.
4 stonewolf
 
28.02.13
11:20
(2) по номеру поста дёргает.
5 Скользящий
 
28.02.13
11:20
У меня такой в личной карточке можешь посмотреть, делает то же самое.
6 Jaffar
 
28.02.13
11:24
(5) скрипт в личной карточке видит только аф_фтар, не?
7 stonewolf
 
28.02.13
11:24
(3) а чего не прикрутят в движок? удобнее было бы.
(5) то ли не видать, то ли я в глаза долблюсь.
8 IamAlexy
 
28.02.13
11:25
(4) страницы понимает?
9 YHVVH
 
28.02.13
11:26
велосипед
10 Скользящий
 
28.02.13
11:27
(6) Хм, ты прав. Выложил на дроп. https://dl.dropbox.com/u/100156695/скрипт.js
11 IamAlexy
 
28.02.13
11:27
у мисты в ссылках косяк есть:

_http :// www. forum.mista.ru /topic.php?id=653285&page=7#599

эта ссылка находится на странице 7 и ведет на страницу 6, должна вести по крайней мере.

то есть переход по ссыке сейчас как они генерятся - ничего не даст ибо сайт будет искать пост 599 на странице 7, а он на странице 6 находится и ничего не найдет.

соответственно все эти ваши скриптовые всплывающие подсказки нихера не работать будут..
12 stonewolf
 
28.02.13
11:32
(6) Тогда понятно. Прикручивать нет смысла. Не обратил внимания на личный скрипт.
(9) ну тады сорри.
(10) спс
(11) Текст дёргается именно по номеру поста в текущей теме, а не по ссылке.
13 stonewolf
 
28.02.13
11:35
+(11) номер страницы значения не имеет
14 Jaffar
 
28.02.13
11:42
а что такое "букмарклет"?
15 Jaffar
 
28.02.13
11:43
сорри, педивикия уже подсказала.
16 zlnk
 
28.02.13
11:44
(10) а что надо сделать, чтобы скрипт начал свою работу?

неплохо бы в основной код.
17 Jaffar
 
28.02.13
11:44
(16) F5 в карточке или на страничке
18 zlnk
 
28.02.13
11:51
(17) (17) сделал. фичи вижу, глюки тоже прибавились.
19 Jaffar
 
28.02.13
11:52
(18) да, в этом скрипте даром добавляется номер поста, на который ты отвечаешь - с недавних пор это сам движок делает.
20 zlnk
 
28.02.13
11:55
(19) снес скрипт из (10), поставил из (0). вообще не вижу, чтобы он работал... может, встал криво...
21 zlnk
 
28.02.13
11:56
(20) показывает автора, но не текст.
ТС, чяднт?
22 stonewolf
 
28.02.13
11:59
(21) глюк :/ тестил на больших темах. страниц должно быть больше одной.
23 Asmody
 
28.02.13
12:01
(1) я пока не понял, что оно делает, но скажу, что на мисте можно смело использовать jQuery, код короче и понятнее выйдет
24 zlnk
 
28.02.13
12:02
(22) ога! работает! спасибо! (не велосипед)
25 stonewolf
 
28.02.13
12:30
(21)(22) Поправил. http://rghost.ru/44162998
или заменить
«this.topic=(/\d+(?=&)/).exec(document.URL)[0];»
на
«this.topic=(/\d+(?=&*)/).exec(document.URL)[0]; »
26 Cube
 
28.02.13
12:38
В опере криво работает: показывает текст ссылки в левой части экрана на прозрачном фоне и без рамки))

ща скажу!
27 Скользящий
 
28.02.13
12:42
(19) Мне че-то лень искать версию без глюков, те глюки которые есть не напрягают. Там кстати и защита от котят есть.
28 badboychik
 
28.02.13
13:02
давно хотел сам такой написать но было лень. Хотя этот ставить тоже лень

ща скажу!
29 IamAlexy
 
28.02.13
13:03
срин уже сделайте, а ?
30 badboychik
 
28.02.13
13:06
я только написал пока кнопачку для поднятия наверх страницы. Крутить колесо то ведь лень ))
http://i.imgur.com/uEN2AVH.png
31 Cube
 
28.02.13
13:06
32 Cube
 
28.02.13
13:07
33 badboychik
 
28.02.13
13:09
(32) Оно висит внизу страницы всегда и видно когда дойдешь до низа? А у меня всегда сбоку прилеплена по абсолютным координатам. А вообще надо чтоб как вконтакте было и на хабре - 30 пикселей по всей левой стороне является кнопкой
34 IamAlexy
 
28.02.13
13:10
сделайте нормальный скрин - нихера не понятно что там где куда всплывает
35 stonewolf
 
28.02.13
13:10
(34) Должно быть так: http://i.imgur.com/aQv9Qpj.png
36 Cube
 
28.02.13
13:12
(34) У меня опера, а в опере - (26) :)
37 stonewolf
 
28.02.13
13:16
(36) Эх, надо было дописать в заголовке "(для хрома)" :) Опера ДОМ структуру походу по-другому строит... Мож гляну потом.
38 y88
 
28.02.13
13:18
(37) посмотри это http://www.forum.mista.ru/users_js/47478.js
39 yurec_k
 
28.02.13
13:31
(38) для nightly темочка работает,
(25) не работает
40 Ksandr
 
28.02.13
13:35
Кто-то делился. у меня это вот так выглядит:
https://dl.dropbox.com/u/39913355/Screen%20Shot%202013-02-28%20at%2013.34.28.png

Работает при наведении мышки на цифру в посте.
41 acsent
 
28.02.13
13:40
(0) вложенность работает? А так то такой скрипт уже есть давно
42 stonewolf
 
28.02.13
13:52
(41) Планирую в ближайшее время.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший