Крошка Ру, спасибо за интересный вопрос. okkamas_knife, большое спасибо за ликбез.
Сделал себе кнопку для выхода из просмотра плейлиста на YouTube на страницу ролика. Насчёт vimeo: я задал (17,26).
Отсутствует
а плеер то где? плеер то встраивется в код странички сайта и вот чтоб его выдрать оттуда н нужен индивидуальный подход
okkamas_knife
этот код сам плеер предлагает , на любой странице он один и тот же будет - вот самый простой html документ с этим кодом
<html><head><iframe src="http://vk.com/video_ext.php?oid=-31279213&id=161076306&hash=c153283e6faaea8e" width="607" height="360" frameborder="0"></iframe></body></html>
Добавлено 20-11-2011 17:01:27
vitalii201 Пожалуйста ... у такого чайника как я много возможно интересных вопросов, только задаю их редко чтобы не мучить своей тупостью знающих людей
okkamas_knife
с vimeo похоже ошибся - там в двух местах следует вставлять по-видимому из такого http://vimeo.com/28253417 сделать так http://player.vimeo.com/video/28253417
Отредактировано Крошка Ру (20-11-2011 17:01:27)
Отсутствует
ну так вот этот ифраме с кодом может быть где угодно на страничке.
плюс у него отсутствует ID что осложняет его поиск.
тут либо тупо подгружать страничку заново и парсить её ища указанный урл
либо для конкретного сайта разбирать DOM дерево странички чтоб вытащить нужный элемент.
okkamas_knife по этому куску наверное можно искать > http://vk.com/video_ext.php?oid=
Добавлено 20-11-2011 17:57:31
var a="http://player.vimeo.com/video/"; // готовим а
var b=window._content.document.location.href; //получаем текущий адрес
var b=b.slice(17,20);//отрезаем от http://vimeo.com/28253417 начало (17 сиволов до цифр,20 то что оставить с запасом сделал)
var truba=a+b;
обезьяну проще научить
Отредактировано Крошка Ру (20-11-2011 17:57:31)
Отсутствует
не работает кнопка relative tabs
Вот так, вроде бы:
var handler = function (event) { var tab = gBrowser.selectedTab; var tabpos = "_tPos" in tab ? tab._tPos : Array.indexOf(gBrowser.tabs || gBrowser.tabContainer.childNodes, tab); gBrowser. moveTabTo (event. target, tabpos + 1); };
(заменить соответствующую функцию)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Если не трудно, подскажите: Как сделать кнопку, что-бы открывать текущую страницу в новой вкладке с адресом
http://доменное имя.visualizetraffic.com/ ?
(не разобрался, пока, как получать доменное имя и добавлять в середину URL)
Отредактировано vitalii201 (01-12-2011 22:59:05)
Отсутствует
не трололо, не бла-бла-бла и даже не .ololo.com(.visualizetraffic.com).
адрес здесь тоже так получать - var url = window._content.document.location.href; надо было?
замена дополнению не получилась. остаётся.
Отсутствует
Адрес создаётся-то правильно (спасибо), но видно сайт работает по другому принципу (или я что-то непонимаю или одно из трёх)
Отсутствует
Хотел поставить вот эту кнопку, но что-то не работает. (
Всё вроде бы сделал по инструкции.
var prefstate="custombuttons.prefstate.1";
var mypref01="browser.chrome.toolbar_tips";
var mypref01value1=1;
var mypref01value2=0;
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
this.PS = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
var state=1-this.PS.getBoolPref(prefstate);
if (state==false){
var mypref01value=mypref01value2;
state=false;
} else {
var mypref01value=mypref01value1;
state=true;
};
this.PS.setBoolPref(mypref01,mypref01value);
this.PS.setBoolPref(prefstate,state);
this.checked=state;
/*Initialization Code*/
var prefstate="custombuttons.prefstate.1";
var mypref01="browser.chrome.toolbar_tips";
var mypref01value1=1;
var mypref01value2=0;
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
this.PS = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
var state=this.PS.getBoolPref(prefstate);
if (state==false){
var mypref01value=mypref01value2;
state=false;
} else {
var mypref01value=mypref01value1;
state=true;
};
this.PS.setBoolPref(mypref01,mypref01value);
this.PS.setBoolPref(prefstate,state);
this.checked=state;
Linux Mint 11, Firefox 3.6.24, Custom Buttons 0.0.5.5.
Пробовал создавать новый профиль.
Отсутствует
okkamas_knife
Save Link To Folder(Contextmenu)(Firefox)
У меня не работает, в d:\\TMP\\ не сохраняет, не показывает alertSlide.
Отсутствует
bunda1
А ставил как?
ща только что поставил из Код кнопки. всё работает.
проверь код кнопки не покоцался при добавлении? редирект ремовер иногда грешит этим.
ну и папка та должна существовать.
кстати а система какая у тебя? на хр всё ок
ставил из Инициализация:
теперь поставил из Код кнопки и всё работает.
Добавлено 03-12-2011 14:06:13
Link Master (Context menu)(updated 03/12/2011 13:25 теперь с иконками!)
обрати внимание, в меню ссылки у
Искать текст ссылки в Nigmа
Искать текст ссылки в Yandex
одинаковые иконки!
Отредактировано bunda1 (03-12-2011 14:06:13)
Отсутствует
Link Master (Context menu)(updated 03/12/2011 13:25 теперь с иконками!)
Извини что навязываюсь, но было бы не плохо добавить пункт
Копировать ссылку и изменить текст ссылки(BBCode)
//запомнить ссылку storage = globalStorage[document.domain]; this.str = gContextMenu.getLinkURL(); storage['link']= str; //Закрыть контекстное меню document.getElementById("contentAreaContextMenu").hidePopup(); //вести текст для ссылки(BBCode) var Title = storage['link']; var Desc = "Введите текст для ссылки(BBCode)"; var HTTP = ""; var URL = custombuttons.promptBox(Title, Desc, HTTP); if (URL[0] == false) return; else var text = [URL[1]]; //Копировать ссылку (BBCode) this.str = ("[url=" + storage['link'] + "]"+ text + "[/url]"); var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); clipboard.copyString(str); // удалить значение 'link' delete storage['link']
Отредактировано bunda1 (03-12-2011 14:18:05)
Отсутствует
bunda1
а смысл? какая разница когда менять текст до вставки или после?
а лишний пункт(и с окошком ввода к томуже) -лишняя путаница
если тебе надо то добавь себе это несложно.
ps проверь как работает кнопка сохранить ярлык при создании из инициализации.
у меня вроде ок всё.
баг с иконкой поправил.
а смысл? - удобней и быстрей
проверь как работает кнопка сохранить ярлык при создании из инициализации - проверил работает но если сохранять ярлык от сюда Сегодня 12:35:47 почему то не работает.
Отредактировано bunda1 (03-12-2011 14:41:04)
Отсутствует
bunda1
теперь всё ок и имена проверяет-заменяет обрезает.
спасибо
bunda1
а насчет того что быстрей я например не вижу разницы где вводить имя линка в окошечке или после того как вставишь. с окошечком имхо даже неудобнее потому что не переключишься на другую вкладку пока не введёшь.
Что удобней - где то копируешь текст для ссылки + средней кнопкой скопировал текст в окошко ввода или где то копируешь текст для ссылки + выделяеш ненужный текст в ссылке и меняеш на текст из буфера.
P.S.надо будет сделать без окошка - где то копируешь текст для ссылки + Копировать BB код.
сделал;
//запомнить ссылку storage = globalStorage[document.domain]; this.str = gContextMenu.getLinkURL(); storage['link']= str; //Копировать ссылку как(BBCode) var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); this.str = ("[url=" + storage['link'] + "]"+ readFromClipboard() + "[/url]"); clipboard.copyString(str); //сообщение custombuttons.alertSlide("Скопировал ссылку как(BBCode)", readFromClipboard()); // удалить значение 'link' delete storage['link']
Отредактировано bunda1 (03-12-2011 17:55:12)
Отсутствует
по клику генерим и открываем хтмльник в нем реализуем все кнопочки выбора-галочки
и при нажатии применить кнопка считывает все настройки и в конфиг загоняет
я бы сделал меню по ПКМ вот как у меня тут 08-04-2011 22:51:18
{ label:"Копировать текст ссылки", command:command1, image:txticon active:n[1] }, далее при обработке смотрим если active=0 то пропускаем пункт (типа как я с сепараторами сделал
)
не понял но мне кажетса так работать не будет патому я уже что то такое пыталса зделать, вот так
{if (custombuttonsUtils. getPrefs ("FindBar.Highlight", true)) { label:"Копировать текст ссылки", command:command1, }},
показывает ошибку
Отредактировано bunda1 (03-12-2011 20:46:01)
Отсутствует
Вот мелочь, а приятно. Хорошо бы, если и другие авторы кнопок предусматривали открытие поста с кнопкой.
Отсутствует
okkamas_knife
лишнии пункты в твоем меню можно удалять/показывать вот так, не перезапуская ФФ
var CopLink = document.getElementById("context-Demo-Menu-Копировать текст ссылки"); var DomInsp = document.getElementById("context-Demo-Menu-Открыть в DOM Inspector"); if (custombuttonsUtils. getPrefs ("dom.disable_open_during_load", true)) { CopLink.setAttribute("style", "visibility: collapse;"); DomInsp.setAttribute("style", "visibility: collapse;"); } else { CopLink.setAttribute("style", "visibility:visible"); DomInsp.setAttribute("style", "visibility:visible"); };
Отредактировано bunda1 (03-12-2011 21:18:42)
Отсутствует
okkamas_knife
вот сделал образец для твоей кнопки Link Master, удалять/показывать пункты в твоем меню, не перезапуская ФФ.
ПКМ на кнопке
//проверить наличие строк в about:config и создать если не существует(Add preferences)........................................ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService); if (custombuttons.getPrefs("ContexLinkMaster.version") !== '1') { prefs.setCharPref("ContexLinkMaster.version", "1"); prefs.setBoolPref("ContextFDM", true); prefs.setBoolPref("ContextOpera", true); }; //удалить настройки кнопки из about:config если удаляетса кнопка(delete preferences, if delete button) this.onDestroy = function(reason) { if (reason == "delete"){ // удалить настройки(clear preferences) custombuttons.clearPrefs("ContexLinkMaster.version"); custombuttons.clearPrefs("ContextFDM"); custombuttons.clearPrefs("ContextOpera"); } }; //настройка меню(CB menu settings)................................................... //Объявляем 'storage' .. storage = globalStorage[document.domain]; //показывать Free Download Manager ..... this.FDM = function(mi, id) { // переключаем настройки в about:config(toggle preference) var s = "ContextFDM"; custombuttons.setPrefs(s, !custombuttons.getPrefs(s)); //изменить нужный пункт меню(toggle menuitems) toggleLabel(mi, id) //Запускаем функцию 'ToggleContextMenu' ToggleContextMenu(event); } //показывать Opera..... this.Opera = function(mi, id) { // переключаем настройки в about:config(toggle preference) var s = "ContextOpera"; custombuttons.setPrefs(s, !custombuttons.getPrefs(s)); //изменить нужный пункт меню(toggle menuitems) toggleLabel(mi, id) //Запускаем функцию 'ToggleContextMenu' ToggleContextMenu(event); }; //изменить меню(toggle menu).... function toggleLabel(mi, id) { //Free Download Manager if(!id || id == "Fmd") { var label = custombuttonsUtils. getPrefs ("ContextFDM", true) ? "показываем FMD" : "не показываем FMD"; storage['FMDlabel'] = label; if(mi) mi.label = label; } //Opera if(!id || id == "Opera") { var label = custombuttonsUtils. getPrefs ("ContextOpera", true) ? "показываем Opera" : "не показываем Opera"; storage['Operalabel'] = label; if(mi) mi.label = label; } }; toggleLabel(event); // Our menu items.... this.ss = [ { label: storage['FMDlabel'], cmd: 'document.popupNode.FDM(this, "Fmd")', sItemId: ''}, //{ label: "separator", sItemId: ''}, { label: storage['Operalabel'], cmd: 'document.popupNode.Opera(this, "Opera")', sItemId: ''}]; // Our Initialization function for creating the context menu, setting up menuitems and telling var Cb = custombuttons; this.mObj = Cb.getCbContextObj(this); this.init = function(x) { x.mObj.setSub(); var nItem = {}, mItem = {}; document.getElementById(CB2const.sCBCtxtMenu).setAttribute("oncommand", "event.stopPropagation()"); for(var i in x.ss) { nItem = new x.mObj.getItem(); nItem.id = 'Note'; nItem.label = x.ss[i].label; if (nItem.label == "separator") { nItem = document.createElement("menuseparator"); } nItem.value = String(i); mItem = x.mObj.insertBefore(nItem , x.mObj.oMenu.lastChild); this.ss[i].sItemId = mItem.id; mItem.setAttribute('oncommand',x.ss[i].cmd) } x.mObj.getItem(); nItem = x.mObj.getItem(); nItem.id = 'Note'; this.separator = x.mObj.insertBefore( nItem , x.mObj.oMenu.lastChild); } this.init(this); //изменяем контекстное меню ................... function ToggleContextMenu(event){ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService); //Объявляем 'FDM','Opera' . var ContextFDM= document.getElementById("context-Demo-Menu-Закачать ссылку с помошью Free Download Manager"); var ContextOpera = document.getElementById("context-Demo-Menu-Открыть ссылку в Opera"); //FDM... if (!custombuttonsUtils. getPrefs ("ContextFDM", false)) { ContextFDM.setAttribute("style", "visibility: collapse;"); } else { ContextFDM.setAttribute("style", "visibility:visible"); }; //Opera if (!custombuttonsUtils. getPrefs ("ContextOpera", false)) { ContextOpera.setAttribute("style", "visibility: collapse;"); } else { ContextOpera.setAttribute("style", "visibility:visible"); } }; ToggleContextMenu(event);
Отредактировано bunda1 (03-12-2011 23:32:10)
Отсутствует
okkamas_knife
вопрос есть. а ты не знаешь можно ли оперативно добавлять в кнопку код?
не знаю как, но тут где то была кнопка которая делает новые кнопки из букмрклетов, надо попробовать переделать.
надо будет продумать как это должно быть внешне а потом думать как организовать так чтоб добавление модулей добавляющих ту или иную функцию было простым для юзера.
как для Toolbar Buttons http://codefisher.org/toolbar_button/to … tton_maker
а что если сделать кнопарик меняющий кучу настроек в конфиге одним махом?
если хочешь я сделаю только какие настройки и как должно ето выглядеть. Но это можно сделать без кнопки через FF меню или даже через about:config изменил одну настройку остальные 20 настройки сами изменились.
кнопка -меню расписываем в пунктах какой что делает
при выборе пункта открываем окошко ввода-изменения значения с подсказками
подсказки не для меня, я с трудом пишу на русском.
//--LM01S--
//----begin module---
код
//---- end module---
//--LM01E--
к сожалению я в таких кодах не разбираюсь.
кстати ты не знаешь как можно создавать панель с определённым именем и помещать на неё кнопки?
(из кода разумеется)
не знаю и даже не представляю
есть мысль сделать кнопку которая создаёт тулбар,набивает его необходимыми кнопками и скрывает по-умолчанию.
я переделал образец кода создающий меню для твоей кнопки Link Master, теперь меньше кода и код проще.
//проверить наличие строк в about:config и создать если не существует(Add preferences)........................................ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService); if (custombuttons.getPrefs("ContexLinkMaster.version") !== '1') { prefs.setCharPref("ContexLinkMaster.version", "1"); prefs.setBoolPref("ContextFDM", true); prefs.setBoolPref("ContextOpera", true); }; //удалить настройки кнопки из about:config если удаляетса кнопка(delete preferences, if delete button) this.onDestroy = function(reason) { if (reason == "delete"){ // удалить настройки(clear preferences) custombuttons.clearPrefs("ContexLinkMaster.version"); custombuttons.clearPrefs("ContextFDM"); custombuttons.clearPrefs("ContextOpera"); } }; //настройка меню(CB menu settings)................................................... //Объявляем 'storage' .. storage = globalStorage[document.domain]; //изменить меню кнопки(toggle button menu)........ //изменяем контекстное меню на странице this.CBlabel = function (mi, id){ //Free Download Manager........ if(!id || id == "Fmd") { //Объявляем s для переключение настроек в about:config var s = "ContextFDM"; //Объявляем 'ContextFDM' var ContextFDM= document.getElementById("context-Demo-Menu-Закачать ссылку с помошью Free Download Manager"); if (!custombuttonsUtils. getPrefs ("ContextFDM", false)) { ContextFDM.setAttribute("style", "visibility: collapse;"); var label = " FMD"; } else { ContextFDM.setAttribute("style", "visibility:visible"); var label = "● FMD" }; storage['FMDlabel'] = label; if(mi) mi.label = label; }; //Opera........................ if(!id || id == "Opera") { //Объявляем s для переключение настроек в about:config var s = "ContextOpera"; //Объявляем 'ContextOpera' var ContextOpera = document.getElementById("context-Demo-Menu-Открыть ссылку в Opera"); if (!custombuttonsUtils. getPrefs ("ContextOpera", false)) { ContextOpera.setAttribute("style", "visibility: collapse;"); var label = " Opera"; } else { ContextOpera.setAttribute("style", "visibility:visible"); var label = "● Opera"; }; storage['Operalabel'] = label; if(mi) mi.label = label; } // переключаем настройки в about:config(toggle preference) custombuttons.setPrefs(s, !custombuttons.getPrefs(s)); }; this.CBlabel(); // Our menu items.... this.ss = [ { label: storage['FMDlabel'], cmd: 'document.popupNode.CBlabel(this, "Fmd")', sItemId: ''}, //{ label: "separator", sItemId: ''}, { label: storage['Operalabel'], cmd: 'document.popupNode.CBlabel(this, "Opera")', sItemId: ''}]; // Our Initialization function for creating the context menu, setting up menuitems and telling var Cb = custombuttons; this.mObj = Cb.getCbContextObj(this); this.init = function(x) { x.mObj.setSub(); var nItem = {}, mItem = {}; document.getElementById(CB2const.sCBCtxtMenu).setAttribute("oncommand", "event.stopPropagation()"); for(var i in x.ss) { nItem = new x.mObj.getItem(); nItem.id = 'Note'; nItem.label = x.ss[i].label; if (nItem.label == "separator") { nItem = document.createElement("menuseparator"); } nItem.value = String(i); mItem = x.mObj.insertBefore(nItem , x.mObj.oMenu.lastChild); this.ss[i].sItemId = mItem.id; mItem.setAttribute('oncommand',x.ss[i].cmd) mItem.setAttribute("style", "margin-left: -14px;"); } x.mObj.getItem(); nItem = x.mObj.getItem(); nItem.id = 'Note'; this.separator = x.mObj.insertBefore( nItem , x.mObj.oMenu.lastChild); //.... var CCsubCall = document.getElementById("custombuttons-contextpopup-subCall"); CCsubCall.setAttribute("style", "margin-left: -4px;"); } this.init(this);
Отредактировано bunda1 (07-12-2011 20:42:29)
Отсутствует
Скажите, а существует возможность добавить в кнопку копирование всех ссылок в выделенном фрагменте. Так делает расширение Multi Links
Отсутствует
okkamas_knife
когда-то давно была твоя кнопка "Organize Bookmarks" - открывает окно управления закладками. Так вот вопрос:
она содержит всего одну строку для раздела код - PlacesCommandHook.showPlacesOrganizer('BookmarksMenu'); - так все прекрасно работает.
но если ее переместить в инициализация, например вот так:
this.midclick = function() {PlacesCommandHook.showPlacesOrganizer('BookmarksMenu');}
не работает. Что не так?
Отсутствует
а можно Extension List исправить для , а то у меня ошибку выдаёт
Добавлено 05-12-2011 20:37:44
okkamas_knife Кнопка Открыть в нижней панели - а без выпадающего списка ? Например только "Открыть Загрузки" , Открыть папку..."
Отредактировано Крошка Ру (05-12-2011 20:38:21)
Отсутствует
Anton
а как насчет того чтоб реализовать в СВ следующую функцию
в окошке редактирования кнопки кнопочка-меню вставляющая в указанную курсором позицию код
а рядом кнопка вызывающая редактор для неё появляется список пунктов меню с 3мя кнопками
редактировать удалить добавить новый пункт после этого(или одну кнопку добавить на все)
по кнопке редактирование открывается окно в котором две колонки название пункта и собственно вставляемый код.
то есть использование данной фичи будет такое
набил необходимые часто используемые куски и в процессе кодинга просто выбрал пунт вставил подправил если надо.плюс если всю инфу хранить в отдельном файлике то можно сделать чтото типа конструктора для новичков.
сделать набор подобных кусочков и импортировать его.
тогда написание кнопок для новичка упростится - открыл окошко нажал кнопку вставил нужный пункт меню подправил и ок.
в подготовке подобного сборника даже готов поучаствовать посильно.
Спасибо за предложение, буду иметь в виду.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует