Как стать автором
Обновить

Хабра-редактор комментариев ноль.один

Время на прочтение 4 мин
Количество просмотров 775
Прочитал вот это и пришла идея сделать нечто подобное для оперы. Оно, конечно, не блистает теми же возможностями, не так удобен, но и делалось для себя, сам попользовался, предлагаю на всеобщее обозрение, может, кому и пригодится, может, кто доведет до ума…

В краце как оно работает:
В опере можно запускать свои скрпиты при входе на страницы, это очень удобная штука, позволяет избавляться от ненужных блоков и тому подобной нечисти. В общем, много не буду говорить, подключить скрипт можно в настройках (tools -> preferences -> content -> Javascript Options[это кнопка справа] -> user JavaScript files[это текстовое поле в самом низу])



Там можно ввести путь, откуда опере стоит брать скрипты, браузер будет сканить все файлы и пытаться выполнить в них код по возможности. Я стараюсь для каждого сайта делать свой скрипт, в данном случае у нас будет вот такой код:
  1. if ( location.href.indexOf('habrahabr.ru') !== -1 )
  2. {
  3.     
  4.     var buttons = [
  5.         { caption: 'pre', openTag: '<pre %%%>',     closeTag: '</pre>' },
  6.         { caption: 'A',    openTag: '<a href="%%%">', closeTag: '</a>', correctTag: function(){ return prompt("Введи урл"); } },
  7.         { caption: 'user', openTag: '<hh user="%%%" />', correctTag: function(){ return prompt("Введи имя"); } },
  8.         { caption: 'img', openTag: '<img src="%%%" />', correctTag: function(){ return prompt("Введи урл"); } }
  9.     ]
  10.  
  11.     function addText()
  12.     {
  13.         var textarea = $('js-field-comment');
  14.         var button = buttons[event.target.id];
  15.         textarea.value += button.openTag.replace( '%%%', button.correctTag || '' );
  16.         if( button.closeTag )
  17.         {
  18.             textarea.value += button.closeTag;
  19.         }
  20.     }
  21.     
  22.     function drawButtons()
  23.     {
  24.         for( q = 0; q < buttons.length; q++ )
  25.         {
  26.             var element = buttons[q];
  27.  
  28.             var btn     = document.createElement( 'input' );
  29.             var textarea = $('js-field-comment');
  30.             
  31.             btn.type    = 'button';
  32.             btn.value  = element.caption;
  33.             btn.id     = q;
  34.             
  35.             btn.onclick = addText;
  36.             
  37.             textarea.parentNode.insertBefore( btn, textarea );
  38.         }
  39.         
  40.         var br = document.createElement('br');
  41.         textarea.parentNode.insertBefore( br, textarea );
  42.         
  43.     }
  44.     
  45.     document.onload = drawButtons;
  46.     
  47. }
* This source code was highlighted with Source Code Highlighter.


Если этот код вставить в любой файл с рзрешением js в папку указанную в настройках, то при ответе на коментарий, получится примерно такая штука:


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

зы: Чтоб добавить свою кнопку, нужно добавить в массив buttons элемент с полями:
caption — заголовок кнопки (обязательное поле)
openTag — открывающий тэг (обязательное поле)
closeTag — закрывающий тэг (не обязательное поле)
correctTag — функция заменяющая в открывающем тэге "%%%" такую строку (не обязательное поле)

upd: я не меряюсь ни с кем пиписьками, у меня просто есть время и желание сделать что нибудь полезное…
upd2: опера ругается на скрипт, если он не в кодировке utf8, ей не нравится русский в других кодировках

Теги:
Хабы:
+21
Комментарии 54
Комментарии Комментарии 54

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн