Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№1085125-10-2016 18:56:46

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

villa7 пишет

1. Чтобы ссылки открывал только на YouTube.
2. Добавить возможность добавлять ссылки в плей лист по (ПКМ+Ctrl) этой командой

А эсли так:

Выделить код

Код:

// Открыть на youtube ссылки в PotPlayerMini по ПКМ или добавить по ctrl + ПКМ ......
addEventListener("click", (e, butt = e.button)=> {
   if (
       butt != 2
       || !XULBrowserWindow.overLink
       || gBrowser.contentDocument.location.host != "www.youtube.com"
      ) return;

   e.preventDefault();
   e.stopPropagation();

   var path = "C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe";
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   file.initWithPath(path);
   process.init(file);
   process.run(false, [XULBrowserWindow.overLink, ((butt == 2 && e.ctrlKey) ? "/add" : "")], 2);

}, true, gBrowser);

Отсутствует

 

№1085225-10-2016 19:30:01

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

bunda1
О, спасибо. Замечательно. Есть только один нюанс. Набираю видео в плей лист по Ctrl+ПКМ, а потом если хочу проиграть видео по ПКМ, то плей лист очищается, а хотелось бы самому удалять, когда нужно.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1085325-10-2016 19:42:21

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

villa7 пишет

bunda1
Набираю видео в плей лист по Ctrl+ПКМ, а потом если хочу проиграть видео по ПКМ, то плей лист очищается, а хотелось бы самому удалять, когда нужно.

Мой код тут не причём, это PotPlayerMini так работает. Набери видео в плей лист по Ctrl+ПКМ и потом попробуй посмотреть на PotPlayerMini какой не будь видео не используя мой код и сам увидишь. Может там что то нужно изменить в настройках PotPlayerMini или по другому добавлять в плей лист.

Отсутствует

 

№1085425-10-2016 20:22:42

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

bunda1
Понятно, будем разбираться. Ещё раз спасибо.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1085525-10-2016 20:54:37

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3141
UA: Firefox 49.0

Re: Custom Buttons

Открыть видео в PotPlayerMini
Можно сделать что бы контекстное меню - открыть в....появлялось только на ссылках ютуба?
Бывает что пункт меню сильно...намыливает глаз.

Отсутствует

 

№1085625-10-2016 21:05:27

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

oleg.sgh пишет

Открыть видео в PotPlayerMini
Можно сделать что бы контекстное меню - открыть в....появлялось только на ссылках ютуба?
Бывает что пункт меню сильно...намыливает глаз.

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u0438%u0434%u0435%u043E%20%u0432%20PotPlayerMini%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bmoz-icon%3A//file%3A//C%3A%5CProgram%20Files%5CDAUM%5CPotPlayer%5CPotPlayerMini.exe%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20path%20%3D%20%22C%3A%5C%5CProgram%20Files%5C%5CDAUM%5C%5CPotPlayer%5C%5CPotPlayerMini.exe%22%3B%0A%0A%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%0A%20%20%20%20%20%20%20%20play%28content.location.href%2C%20%22%22%29%3B%0A%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28self%29%3B%20%0A%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20play%28content.location.href%2C%20%22/add%22%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0Aself.image%20%3D%20%22moz-icon%3A//file%3A//%22%20+%20path%3B%0Avar%20playerName%20%3D%20path.split%28%22%5C%5C%22%29.pop%28%29.replace%28%22.exe%22%2C%22%22%29%3B%0Aself.label%20%3D%20%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u0438%u0434%u0435%u043E%20%u0432%20%22%20+%20playerName%3B%0A%0A%0Avar%20contextMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%3B%20%0Avar%20menuitem%20%3D%20contextMenu.insertBefore%28document.createElement%28%22menuitem%22%29%2C%20document.getElementById%28%22context-sep-open%22%29%29%3B%0Amenuitem.setAttribute%28%22label%22%2C%20%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%20%22%20+%20playerName%29%3B%20%20%20%20%20%20%0Amenuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0Amenuitem.setAttribute%28%22image%22%2C%20%22moz-icon%3A//file%3A//%22%20+%20path%29%3B%20%0Amenuitem.onclick%20%3De%3D%3E%20play%28gContextMenu.getLinkURL%28%29%2C%20e.button%20%3F%20%22/add%22%20%3A%20%22%22%29%3B%0AaddEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%20%7B%0A%20%20%20var%20youtube%20%3D%20gBrowser.contentDocument.location.host%20%3D%3D%20%22www.youtube.com%22%3B%0A%20%20%20menuitem.hidden%20%3D%20%21gContextMenu.onLink%20%7C%7C%20%21youtube%3B%0A%7D%2C%20false%2C%20contextMenu%29%3B%0AaddDestructor%28%28%29%3D%3E%20menuitem.remove%28%29%20%29%3B%0A%0A%20%20%20%20%0Afunction%20play%28link%2C%20param%29%20%7B%0A%20%20%20var%20file%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Ci.nsILocalFile%29%3B%0A%20%20%20var%20process%20%3D%20Cc%5B%22@mozilla.org/process/util%3B1%22%5D.createInstance%28Ci.nsIProcess%29%3B%0A%20%20%20file.initWithPath%28path%29%3B%0A%20%20%20process.init%28file%29%3B%0A%20%20%20process.run%28false%2C%20%5Blink%2C%20param%5D%2C%202%29%3B%0A%7D%3B%0A%0A%0Aself.tooltipText%20%3D%20%22%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u0438%u0434%u0435%u043E%20%u0432%20%22%20+%20playerName%20+%20%22%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0432%u0438%u0434%u0435%u043E%20%u0432%20%u043F%u043B%u0435%u0439%u043B%u0438%u0441%u0442%20%22%20+%20playerName%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№1085725-10-2016 21:16:21

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3141
UA: Firefox 49.0

Re: Custom Buttons

bunda1
Дольше с просьбой собирался :P Спасибо.

Отсутствует

 

№1085825-10-2016 21:48:15

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

_zt пишет

bunda1, а мне, наоборот, хотелось бы кнопку создающую подменю в контекстном меню ссылок и вкладок, с пользовательскими пунктами. В общем, аналог Open With. Например, можно туда предустановить пункты с открытием ссылки/вкладки в IE и PotPlayer + добавление в плейлист PotPlayer, а остальные пункты чтобы пользователь сам добавлял и мог самостоятельно назначать параметры ком.строки. Дело в том, что Open With некоторые параметры просто не передает, тем самым расширение зачастую бесполезно и приходится его функции дублировать другими расширениями, кнопками.

Думаю ты разберёшься как правильно удалять - добавлять пункты в разные подменю. Я только не понял как ты хочешь запускать программы с параметрами ком.строки - по ПКМ на пунктах или как?

Выделить код

Код:

// Открыть страницу в другой программе из контекстного меню, от 25.10.2016. .............
(()=> {
   var array = [
      ["C:\\Program Files\\Internet Explorer\\iexplore.exe", "tab"],
      ["C:\\Program Files\\Opera\\Opera.exe", "tab"],
      ["C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe", "link"],
      ["C:\\Program Files\\Windows Media Player\\wmplayer.exe", "link"],
      ["C:\\Program Files\\Maxthon\\Bin\\Maxthon.exe", "all"]
   ]
  
   var tabContextMenu = document.getElementById("tabContextMenu");
   var array1 = array.filter(m=> m[1] == 'tab');
   var menu1 = tabContextMenu.appendChild(document.createElement("menu"));
   menu1.setAttribute("label", "Открыть страницу в другой программе: ");
   menu1.setAttribute("class", "menu-iconic");
   menu1.setAttribute("image", "moz-icon://file://" + array1[0][0]);
   addEventListener("popupshowing", e=> {  
      menu1.hidden = !e.target.triggerNode.linkedBrowser.currentURI.scheme.startsWith("http");             
   }, false, tabContextMenu);
   menu1.onclick =e=> e.target == menu1 && openWith(array1[0][0]);
   addDestructor(()=> menu1.remove());
   setMenupopup(menu1, "tab");
   
   var contextMenu = document.getElementById("contentAreaContextMenu");
   var array2 = array.filter(m=> m[1] == 'link');
   var menu2 = contextMenu.appendChild(document.createElement("menu"));
   menu2.setAttribute("label", "Открыть ссылку в другой программе: ");
   menu2.setAttribute("class", "menu-iconic");
   menu2.setAttribute("image", "moz-icon://file://" + array2[0][0]);
   addEventListener("popupshowing", ()=> menu2.hidden = !gContextMenu.onLink, false, contextMenu); 
   menu2.onclick =e=> e.target == menu2 && openWith(array2[0][0]);
   addDestructor(()=> menu2.remove());
   setMenupopup(menu2, "link");
   
   function setMenupopup(menu, arg) {
      var menuPopup = menu.appendChild(document.createElement("menupopup"));              
      array.forEach(m=> {
         if ( m[1] != "all" && m[1] != arg ) return;
         var path = m[0], label = path.split("\\").pop().replace(".exe","");
         var mItem = document.createElement("menuitem");
         mItem.setAttribute("label", label);
         mItem.setAttribute("class", "menuitem-iconic");
         mItem.setAttribute("image", "moz-icon://file://" + path); 
         mItem.onclick =()=> openWith(path);
         menuPopup.appendChild(mItem);
      })
   };

   function openWith(path) {  
      var loc = content.document.location;
      var url = (loc.host.slice(-3) == '.рф') ? Services.io.newURI(loc.href, null, null).asciiSpec : loc;  
     
      var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);    
      file.initWithPath(path);
      var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
      process.init(file);
      process.run(false, [url], 1);
   };

})();

Отсутствует

 

№1085925-10-2016 22:47:29

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1420
UA: Firefox 46.0

Re: Custom Buttons

bunda1

Я только не понял как ты хочешь запускать программы с параметрами ком.строки

Добавляя пункт с параметрами. Ты так пример и не привел как добавлять параметры? Весь смысл именно в этом. И еще, как изменить отображаемое имя в меню?
Ведь в том коде который fokanik давал все предельно удобно сделано - ИМЯ, ПУТЬ, ПАРАМЕТР. Нельзя ли и здесь сделать тоже самое? Поскольку пункты в подменю, то не имеет большого смысла их разделение на tab и link, пусть и там и там отображаются, важнее параметры и возможность сменить имя.

И еще, если нет ни одного пункта с "tab" в конце, то кнопка сереет и не работает. Т.е. нельзя везде написать "all" и "link", так работать не будет. А получается так, что браузеры и загрузчики и там и там нужны, а плеера только в линках. Т.е., ситуации когда пункт нужен только для табов, нет.

Отредактировано _zt (25-10-2016 22:49:10)

Отсутствует

 

№1086025-10-2016 22:51:57

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

_zt пишет

bunda1

Я только не понял как ты хочешь запускать программы с параметрами ком.строки

Добавляя пункт с параметрами.

Ну конешно добавляя пункт с параметрами. Я о другом спрашиваю.

Добавлено 25-10-2016 22:57:34

_zt пишет

И еще, если нет ни одного пункта с "tab" в конце, то кнопка сереет и не работает. Т.е. нельзя везде написать "all" и "link", так работать не будет. А получается так, что браузеры и загрузчики и там и там нужны, а плеера только в линках. Т.е., ситуации когда пункт нужен только для табов, нет.

Так ты хочешь что бы подменю на ссылках и вкладках были одинаковые?

Отредактировано bunda1 (25-10-2016 22:57:34)

Отсутствует

 

№1086125-10-2016 23:12:15

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1420
UA: Firefox 46.0

Re: Custom Buttons

bunda1

Ну конешно добавляя пункт с параметрами. Я о другом спрашиваю.

Я не понимаю.

Выделить код

Код:

["C:\\Program Files\\Opera\\Opera.exe", "tab"]

Куда мне здесь вписать параметр?
Например, в коде fokanik, мне это понятно. Первая строка для проигрывания, вторая для добавления в плейлист.

Выделить код

Код:

["PotPlayer", "C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe", "" ],
["PotPlayer Add", "C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe", "/add" ],

Так ты хочешь что бы подменю на ссылках и вкладках были одинаковые?

Нет, я хочу, что бы держать пункт с "tab" в конце строки не было обязаловкой. А сейчас именно так и есть. Я же расписал все.

если нет ни одного пункта с "tab" в конце, то кнопка сереет и не работает. Т.е. нельзя везде написать "all" и "link", так работать не будет.

Отредактировано _zt (25-10-2016 23:13:53)

Отсутствует

 

№1086225-10-2016 23:18:07

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

_zt пишет

Я же расписал все.

Русский язык для меня иностранный поэтому бывает что я что то не понимаю.

Отсутствует

 

№1086325-10-2016 23:34:41

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1420
UA: Firefox 46.0

Re: Custom Buttons

bunda1
Ну сейчас то понятно? В общем, пусть "подменю на ссылках и вкладках будут одинаковые", если так легче сделать.
Главное:
1. чтобы параметры можно было добавлять прямо в строку или по другому, но как ни будь попроще
2. возможность менять имя, а то меню не красиво выглядят

Выделить код

Код:

dmaster
iexplore
ytd

И еще просьба, предусмотреть возможность назначить свой значок для самого подменю, а то он по непонятному алгоритму назначается. Или вообще его убрать.

Отредактировано _zt (25-10-2016 23:39:41)

Отсутствует

 

№1086426-10-2016 01:10:47

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

villa7 пишет

Набираю видео в плей лист по Ctrl+ПКМ, а потом если хочу проиграть видео по ПКМ, то плей лист очищается,

А так если заменить параметр "" на "/autoplay":

Выделить код

Код:

process.run(false, [XULBrowserWindow.overLink, ((butt == 2 && e.ctrlKey) ? "/add" : "/autoplay")], 2);

Отсутствует

 

№1086526-10-2016 01:52:35

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

bunda1 пишет

gBrowser.contentDocument.location.host != "www.youtube.com"

Падает функционал кнопки, плеер еще может открывать ссылки вида - https://www.google.ru/url?q=https://www.youtube.com/watch...
А как сделать регулярное выражение или проверку - if(в url есть "www.youtube.com") то... ?

Отсутствует

 

№1086626-10-2016 02:41:30

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

А вот сюда можно кнопку навесить (любую, открыть в potplayer) - seamonkey -> почта -> rss:

3fb17be0aad1.jpg

Выделить код

Код:

xul:label [1043.600×15]
namespaceURI: XUL
class = headerValue plain text-link headerValueUrl
anonid = headerValue
context = copyUrlPopup
flex = 1
onclick = if (event.button != 2) openUILink(event.target.value, event);
ondragstart = this.parentNode.setDataTransfer(event);
readonly = true
value = http://www.youtube.com/watch?v=xxxxxxxxx

Отсутствует

 

№1086726-10-2016 08:34:22

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

fokanik
Там проблема не в коде, а в настройках плеера была. Спасибо. А вот чтобы и другие сcылки открывал я не против, лишь бы не все подряд, а только с видео.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1086826-10-2016 08:43:27

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

fokanik пишет

А как сделать регулярное выражение или проверку - if(в url есть "www.youtube.com") то... ?

Выделить код

Код:

if ( /www.youtube.com/.test(url) )

Отсутствует

 

№1086926-10-2016 14:25:19

mssign
Участник
 
Группа: Members
Зарегистрирован: 04-11-2009
Сообщений: 21
UA: Firefox 49.0

Re: Custom Buttons

Select Search Engine кнопка не работает.. Firefox 49.02. Искал что то подобное, не нашел.
В идеале 4d1a9aeb878f25997a740cbb47d56d12.jpeg было бы так. Как в омнибаре, он к сожалению удаляет кнопку при перезапуске браузера и давно уже не поддерживается. Может есть готовое решение кнопкой? Не нашел.

Отредактировано mssign (26-10-2016 14:30:40)

Отсутствует

 

№1087026-10-2016 14:48:23

LittleMontana
Участник
 
Группа: Members
Зарегистрирован: 16-11-2013
Сообщений: 211
UA: Firefox 49.0

Re: Custom Buttons

можно ли добавить в код вертикальную отцентровку на той панели, куда кнопка помещена? код ниже

скрытый текст
/*Initialization Code*/
/*Initialization Code*/
const iconSize = 16;
const buttonWidth = 500;
const defaultFavicon = "";


if (gBrowser.currentURI.spec == "about:customizing") return;

const labMarginLeft = 7;
var btnWidth = iconSize + 2*3;
var labWidth = buttonWidth - iconSize - labMarginLeft;
var btnMarginRight = labWidth + labMarginLeft;

var [img, lab] = document.getAnonymousNodes(this);
this.style.cssText = imp('\
    -moz-box-orient: horizontal;\
    -moz-box-pack: start;\
    min-width: ' + btnWidth + 'px;\
    max-width: ' + btnWidth + 'px;\
    margin-right: ' + btnMarginRight + 'px;\
');
lab.style.cssText = imp('\
    display: -moz-box;\
    text-align: start;\
    margin-left: ' + labMarginLeft + 'px;\
    min-width: ' + labWidth + 'px;\
    max-width: ' + labWidth + 'px;\
');
img.style.cssText = imp('\
    display: -moz-box;\
    width: ' + iconSize + 'px;\
    height: ' + iconSize + 'px;\
');
function imp(str) str.replace(/;/g, " !important;");

var mo = new MutationObserver(() => lab.value = self.tooltipText = document.documentElement.getAttribute("title").split('- Mozilla Firefox')[0]);
mo.observe(document.documentElement, {attributes: true, attributeFilter: ["title"]});
mo.mutationCallback(addDestructor(() => mo.disconnect()));

var pl = {}, df = defaultFavicon || PlacesUtils.favicons.defaultFavicon.spec;
pl.onLinkIconAvailable = pl.onLocationChange = () => {
    var icon = gBrowser.selectedBrowser.mIconURL || df
    if (icon.startsWith("http")) icon = "moz-anno:favicon:" + icon;
    img.src = icon;
}
gBrowser.addProgressListener(pl);
pl.onLinkIconAvailable(addDestructor(() => gBrowser.removeProgressListener(pl)));

//addDestructor(() => { for(var node of [self, img, lab]) node.removeAttribute("style") });

/*Спрятать подсказки*/
(function() {
function onPS(e) {
if (e.originalTarget.nodeName != "tooltip" || window.__attributesInspector) return;
var node = e.originalTarget.ownerDocument.tooltipNode;
for (; node && !(node instanceof HTMLAnchorElement); node = node.parentNode);
!node && e.preventDefault();
}
const observer = {
observe: function(win) win.addEventListener("load", this, false),
handleEvent: function(e) {
var doc = e.target;
var win = doc.defaultView;
win.removeEventListener("load", this, false);
if (doc.location.href == "chrome://browser/content/browser.xul" || win.cbttp) return;
win.cbttp = true;
win.addEventListener("popupshowing", onPS, true);
win.addEventListener("unload", function onUL() {
win.removeEventListener("unload", onUL, false);
win.removeEventListener("popupshowing", onPS, true);
}, false)
}
}
addEventListener("popupshowing", onPS, true);
Services.obs.addObserver(observer, "domwindowopened", false);
addDestructor(function() Services.obs.removeObserver(observer, "domwindowopened"));
}) ();
this.onclick = function(с) {if ( с.button == 0 ) gClipboard.write( content.location );}

Отсутствует

 

№1087126-10-2016 17:45:37

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

bunda1 пишет

if ( /www.youtube.com/.test(url) )

Работает, спасибо!
А дальше начинаю делать так:

Выделить код

Код:

if (/www.youtube.com/watch?v=/.test(XULBrowserWindow.overLink) ) alert(true); return;

И кнопка то потухнет, то погаснет? :sick:

Отсутствует

 

№1087226-10-2016 18:07:52

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

fokanik
А если так:

Выделить код

Код:

if (/www.youtube.com\/watch\?v=/.test(XULBrowserWindow.overLink) ) alert(true); return;

:D

Хотя я бы в подобном случае не морочился с регулярными выражениями, а написал бы просто:

Выделить код

Код:

if (XULBrowserWindow.overLink.indexOf('www.youtube.com/watch?v=' >= 0)) alert(true); return;

Отредактировано yup (26-10-2016 18:19:48)

Отсутствует

 

№1087326-10-2016 18:43:44

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

yup пишет

Хотя я бы в подобном случае не морочился с регулярными выражениями, а написал бы просто:

У меня получилось кажется:

Выделить код

Код:

// Открыть на youtube ссылки в PotPlayerMini по ПКМ или добавить по ctrl + ПКМ ......
addEventListener("click", (e, butt = e.button)=> { 
   if (butt != 2 || !XULBrowserWindow.overLink) return;
   

  if (/www.youtube.com\/playlist[?]list=/.test(XULBrowserWindow.overLink) ) //А вот сюда может добавить подтверждение добавления плейлистов?
         {var A = "?";}                                                    //А то бывате по 500 штук видео в плейлисте.
   
   else if (!/www.youtube.com\/watch[?]v=/.test(XULBrowserWindow.overLink)) return;
   
   e.preventDefault(); 
   e.stopPropagation();

   var path = "C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe";
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   file.initWithPath(path);
   process.init(file);
   process.run(false, [XULBrowserWindow.overLink, ((butt == 2 && e.ctrlKey) ? "/add" : "/autoplay")], 2);

}, true, gBrowser);

Может еще с плейлистами заморочиться?

Отсутствует

 

№1087426-10-2016 19:19:43

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

fokanik
И что теперь кнопка умеет? Ссылки на youtube открывать с других сайтов.
А что имеется ввиду

Может еще с плейлистами заморочиться?

вроде в плейлист добавляется.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1087526-10-2016 19:28:33

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

villa7 пишет

А что имеется ввиду

Можно по неосторожности отправить в плеер одну ссылку, а загрузится сразу весь плейлист - 1000 штук видео :rolleyes:
Например ссылку вида: https://www.youtube.com/watch?v=xxxxxxxx&index=6&list=xxxxxxxxxxxxxxxxxx или ссылку на сам плейлист.

А может эти ссылки порезать просто по самую загогулину &:

Выделить код

Код:

/www.youtube.com\/watch[?]v=+[a-zA-Z0-9_-]+[&]/.test(XULBrowserWindow.overLink)

И плеер не будет открывать плейлисты вообще :)

Выделить код

Код:

// Открыть на youtube ссылки в PotPlayerMini по ПКМ или добавить по ctrl + ПКМ ......
addEventListener("click", (e, butt = e.button)=> { 
   if (butt != 2 || !XULBrowserWindow.overLink) return;
   var url = XULBrowserWindow.overLink;

  if(/www.youtube.com\/watch[?]v=+[a-zA-Z0-9_-]+[&]/.test(url) ) url = url.split("&")[0];
    else if (!/www.youtube.com\/watch[?]v=/.test(url)) return;
   
   e.preventDefault(); 
   e.stopPropagation();

   var path = "C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe";
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   file.initWithPath(path);
   process.init(file);
   process.run(false, [url, ((butt == 2 && e.ctrlKey) ? "/add" : "/autoplay")], 2);

}, true, gBrowser);
villa7 пишет

И что теперь кнопка умеет? Ссылки на youtube открывать с других сайтов.

url = url.split("&")[0]; - не совсем правильно, как переделать я не знаю.

Надо сделать ссылковычленитель нормальный :), тогда будет везде правильно работать.

Отредактировано fokanik (26-10-2016 19:57:18)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]