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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№192630-07-2010 22:06:40

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 900
UA: Firefox 3.6

Re: Custom Buttons

okkamas_knife
в "готовых кнопках" есть такая Открытие адреса с выбором из меню
почему-то при попытке добавления ссылок в имени которых встречается знак &, кнопка перестает быть кликабельной :(
Например такой ссылки:

скрытый текст
http://www.101.ru/?an=port_playmp3&channel=36

И еще, можно ли убрать поле меню, там где должны быть значки ссылок или наоборот, как добавить туда свои значки?
Можно ли сделать шрифт некоторых строк жирным?

Отсутствует

 

№192731-07-2010 16:35:44

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Inko7

при попытке добавления ссылок в имени которых встречается знак &, кнопка перестает быть кликабельной

Знак & надо заменить последовательностью символов &

Inko7 пишет:

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

Добавить значок можно так:

Выделить код

Код:

<menuitem class="menuitem-iconic" image="ссылка на изображение" label="... ... />

Можно ли сделать шрифт некоторых строк жирным?

После makeXML можно добавить

Выделить код

Код:

меню. childNodes [0]. style. fontWeight = "bold";

Вместо 0 - индекс нужного элемента, индексация начинается с нуля и включает разделители.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№192831-07-2010 18:22:08

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4296
UA: Firefox 3.6

Re: Custom Buttons

Anton пишет:

Вместо 0 - индекс нужного элемента, индексация начинается с нуля и включает разделители.

Можно проще.
Хак:

Выделить код

Код:

this.type = "menu";
this.orient = "horizontal";
var menu = custombuttonsUtils.makeXML(
    <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
        <menuitem label="Item 0" style="font-weight: bold; text-decoration: underline;" />
        <menuitem label="Item 1" style="font-style: italic;" />
        <menuitem label="Item 2" />
    </menupopup>
);
this.appendChild(menu);
Array.forEach(
    menu.getElementsByAttribute("style", "*"),
    function(mi) {
        mi.setAttribute("style", mi.getAttribute("style") + " ");
    }
);

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№192931-07-2010 22:13:53

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 3.6

Re: Custom Buttons

Посмотрите, на код, два блока выделил

скрытый текст

Выделить код

Код:

/*Initialization Code*/

//Добавить в закладки текущую страницу
function lbMouse(){
try {PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.bookmarksMenuFolderId); } 
               catch(e) { addBookmarkAs(document.getElementById('content')); }
};

//********************BLOCK 1***************************
//Показать/Скрыть панель закладок
function mbMouse(){
toolbar.collapsed = this.flgHS;
flgHS = !this.flgHS;
};
//*********************END******************************

//Открыть менеджер закладок
function rbMouse(){
try {PlacesCommandHook.showPlacesOrganizer('AllBookmarks'); }
          catch(e) {toOpenWindowByType('bookmarks:manager', 'chrome://browser/content/bookmarks/bookmarksManager.xul'); }
};
 
//********************BLOCK 2***************************       
this.flgHS = true;
const toolbar = document.getElementById("PersonalToolbar");
mbMouse();
//*********************END*****************************
this.tooltipText = "Left    => Добавить в закладки текущую страницу \nMiddle => Показать/Скрыть панель закладок \nRight   => Открыть менеджер закладок";

this.onclick = function(event) {
    if(event.button == 0) {
// Действие при клике ЛКМ
lbMouse();
    }
    else if(event.button == 1) {
        // Действие при клике СКМ
mbMouse();        
    }
    else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Действие при клике ПКМ без модификаторов
rbMouse();
    }
};
this.oncontextmenu = function(event) {
    if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Блокируем контекстное меню при клике ПКМ без модификаторов
        event.preventDefault();
        event.stopPropagation();
    }
};

просто на корректность кода - я сомневаюсь (особенно в блоке №2)

Вот так мне кажется наиболее верно:

Выделить код

Код:

//********************BLOCK 2***************************       
this.flgHS = true;
const toolbar = document.getElementById("PersonalToolbar");
//*********************END*****************************

да?

Отредактировано Indomito (31-07-2010 22:18:36)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№193031-07-2010 22:22:40

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4296
UA: Firefox 3.6

Re: Custom Buttons

Indomito пишет:

flgHS = !this.flgHS;

Ммм?

Indomito пишет:

особенно в блоке №2

http://javascript.ru/basic/closure


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№193131-07-2010 22:30:40

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 3.6

Re: Custom Buttons

Infocatcher

Выделить код

Код:

flgHS = !this.flgHS;

блин, а я то думаю что не то, те на разных компах и разных профилях она работает по разному... спс недоглядел.

Хотя если флаг не нужен (я this.flgHS ввёл для унифицирования) то Блок 1 можно написать проще:

Выделить код

Код:

//Показать/Скрыть панель закладок
function mbMouse(){
toolbar.collapsed = !toolbar.collapsed;
};

Отредактировано Indomito (31-07-2010 22:37:02)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№193201-08-2010 08:21:06

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 3.6

Re: Custom Buttons

Infocatcher так я опять по поводу скрытия, те как наиболее верно написать для ID=""PersonalToolbar" и ID="toolbar-menubar"
Варианты скрытия

Выделить код

Код:

const toolbar = document.getElementById("PersonalToolbar");
this.flgHS = false;
toolbar.collapsed = this.flgHS;

или же

Выделить код

Код:

//Это явный бред, но и он не лишён смысла =)
document.getElementById( "PersonalToolbar" ).style.display = "collapsed";
document.getElementById( "PersonalToolbar" ).style.display = "";

и так же для ID="toolbar-menubar"

а?

И как наиболее верно делать их видимыми?

Просто я запутался в методах... ппц :)

Отредактировано Indomito (01-08-2010 09:58:30)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№193301-08-2010 10:38:19

ArtBigTema
Нубмэн
 
Группа: Members
Зарегистрирован: 08-01-2010
Сообщений: 17
UA: Firefox 3.6

Re: Custom Buttons

Кто может помоч мне? не могу сделать бытрую кнопку, вылезает ошибка
нужно вот этот порядок кода выполнить в действие

Выделить код

Код:

ION BUILD=6700624 RECORDER=FX
TAB T=1
URL GOTO=http://ru3.darkorbit.bigpoint.com/indexInternal.es?action=internalDock&tpl=internalDockShips
TAG POS=25 TYPE=DIV ATTR=TXT:
TAG POS=2 TYPE=IMG ATTR=ALT:Купить<SP>сейчас&&SRC:do_img/global/text.esg?l=ru&s=8&f=eurostyle_clan&t=buy_now&uc=1&&TXT:
TAG POS=1 TYPE=TD ATTR=CLASS:button_resizable_2&&TXT:

помогите разобраться как сделать)
ну или с какой прогой можно такую кнопу сделать?

Отредактировано ArtBigTema (01-08-2010 20:54:28)

Отсутствует

 

№193401-08-2010 14:58:26

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4296
UA: Firefox 3.6

Re: Custom Buttons

Indomito пишет:

И как наиболее верно делать их видимыми?

Очевидно же – нужно скрыть точно так же, как это делается галочками из интерфейса.

Выделить код

Код:

<menu id="viewToolbarsMenu" onpopupshowing="onViewToolbarsPopupShowing(event);">

=>

Выделить код

Код:

function onViewToolbarsPopupShowing(aEvent) {
    ...
            menuItem.addEventListener("command", onViewToolbarCommand, false);

=>

Выделить код

Код:

function onViewToolbarCommand(aEvent) {
    ....
    var hidingAttribute = toolbar.getAttribute("type") == "menubar" ? "autohide" : "collapsed";
    toolbar.setAttribute(hidingAttribute, aEvent.originalTarget.getAttribute("checked") != "true");
    document.persist(toolbar.id, hidingAttribute);

Так что как-то так:

Выделить код

Код:

const tbId = "toolbar-menubar";
var tb = document.getElementById(tbId);
var hideAttr = tb.getAttribute("type") == "menubar" ? "autohide" : "collapsed";
tb.setAttribute(hideAttr, tb.getAttribute(hideAttr) != "true");
document.persist(tbId, hideAttr);

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№193502-08-2010 13:20:15

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 900
UA: Firefox 3.6

Re: Custom Buttons

Anton

Знак & надо заменить последовательностью символов &amp;
. . .

спасибо, все отлично сработало!
еще один вопросик - возможно ли реализовать такую задумку:
при выборе нужного пункта из меню кнопки (адрес - это ссылка на плейлист интернет-радио), он открывается/воспроизводится не в новой вкладке, а в где-то в фоне, не загромождая панель вкладок. При этом этот пункт помечается "галочкой". При повторном нажатии все отключается.
Плюс к этому, чтобы при подведении курсора к кнопке отображался играемый трек. Его название можно вычитывать со страницы текущей радиостанции.
Реально такое? :angel: :beer:

Отсутствует

 

№193602-08-2010 18:24:36

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Знак & надо заменить последовательностью символов &amp;

Совсем забыл, можно и без &amp;
Можно писать так

Выделить код

Код:

attribute={"http://a.b?c=d&e=f&g=h"}

Inko7 пишет:

еще один вопросик - возможно ли реализовать такую задумку:
при выборе нужного пункта из меню кнопки (адрес - это ссылка на плейлист интернет-радио), он открывается/воспроизводится не в новой вкладке, а в где-то в фоне, не загромождая панель вкладок. При этом этот пункт помечается "галочкой". При повторном нажатии все отключается.
Плюс к этому, чтобы при подведении курсора к кнопке отображался играемый трек. Его название можно вычитывать со страницы текущей радиостанции.
Реально такое? :angel: :beer:

В принципе, возможно. Вот прототип:

Инициализация

Выделить код

Код:

var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
              xmlns:cb="http://xsms.nm.ru/custombuttons/"
              oncommand="this. parentNode. cbController. handleMenuitem (event);">
        <menuitem label="36"
              type="checkbox"
              cb:url={"http://www.101.ru/?an=port_playmp3&channel=36"}/>
        <menuitem label="37"
              type="checkbox"
              cb:url={"http://www.101.ru/?an=port_playmp3&channel=37"}/>
        <menuitem label="38"
              type="checkbox"
              cb:url={"http://www.101.ru/?an=port_playmp3&channel=38"}/>
      </menupopup>;

this. appendChild (custombuttonsUtils. makeXML (menu));
this. type = "menu";
this. orient = "horizontal";

this. cbController =
{
    btn: null,
    
    get browser ()
    {
        var br = this. btn. getElementsByTagName ("browser") [0];
        if (!br)
        {
            br = <browser xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" style="hidden:true;" type="content"/>;
            br = custombuttonsUtils. makeXML (br);
            this. btn. appendChild (br);
        }
        return br;
    },
    
    handleMenuitem: function (event)
    {
        this. btn. removeChild (this. browser);
        this. btn. setAttribute ("tooltiptext", "");
        var menuitem = event. target;
        if (!menuitem. getAttribute ("checked"))
            return;
        Array. forEach
        (
            menuitem. parentNode. childNodes,
            function (item)
            {
                if (item == menuitem)
                    return;
                item. removeAttribute ("checked");
            }
        );
        var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url");
        if (!url)
            return;
        this. browser. loadURI (url);
    },
    
    showTooltip: function ()
    {
        try
        {
            var doc = this. browser. contentDocument;
            var ts = doc. getElementById ("titlesong");
            this. btn. setAttribute ("tooltiptext", ts. textContent);
        } catch (e) {}
    }
};
this. cbController. btn = this;
 
this. onmouseover = function ()
{
    this. cbController. showTooltip ();
};

Отредактировано Anton (02-08-2010 19:16:36)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№193702-08-2010 18:56:15

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 900
UA: Firefox 3.6

Re: Custom Buttons

Anton
Вот это просто супер! И выбор и подсказки об исполнителе - все работает!
А вот звука я почему-то не слышу... :(

Отсутствует

 

№193802-08-2010 19:35:07

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

ps. Забыл добавить атрибут браузеру

Выделить код

Код:

            br = <browser xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" style="hidden:true;" type="content"/>;

Inko7 пишет:

А вот звука я почему-то не слышу...

А у меня работает.
Кнопка создает браузер и загружает в него страницу как в обычной вкладке. Поэтому надо иметь в виду что
1. до начала воспроизведения может пройти какое-то время (пока страница не загрузится)
2. какое-нибудь из расширений (NoScript, может быть) может блокировать содержимое браузера кнопки
3. а может проблема с flashplayer'ом, как у меня - периодически отказывается воспроизводить звук


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№193902-08-2010 19:48:16

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 3.6

Re: Custom Buttons

Anton а куда этот атрибут писать... в секцию

Выделить код

Код:

var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
              xmlns:cb="http://xsms.nm.ru/custombuttons/"
              oncommand="this. parentNode. cbController. handleMenuitem (event);">

да?


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№194002-08-2010 19:57:57

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Indomito пишет:

Anton а куда этот атрибут писать

Я исходное сообщение (http://forum.mozilla-russia.org/viewtop … 62#p436062) поправил, можно там посмотреть, куда писать.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№194103-08-2010 10:32:21

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 900
UA: Firefox 3.6

Re: Custom Buttons

Anton

А у меня работает.
Кнопка создает браузер и загружает в него страницу как в обычной вкладке. Поэтому надо иметь в виду что
1. до начала воспроизведения может пройти какое-то время (пока страница не загрузится)
2. какое-нибудь из расширений (NoScript, может быть) может блокировать содержимое браузера кнопки
3. а может проблема с flashplayer'ом, как у меня - периодически отказывается воспроизводить звук

Везет тебе, а у меня почему-то облом:(
1. ждал минут 5 - ничего...
2. NoScript установлен, но выключен. Также выключал Adblock - все также...
Вот список включенных расширений:

скрытый текст
Создано: Tue Aug 03 2010 09:20:02 GMT+0300
User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729) YB/4.3
ID сборки: 20100722155716

Используемые расширения: [49]
- Adblock Plus 1.2.1: http://www.google.com/search?q=Firefox%20Adblock%20Plus
- Adblock Plus: Element Hiding Helper 1.0.6: http://adblockplus.org/
- Add Bookmark Here ² 3.6.20100625: https://addons.mozilla.org/firefox/addon/3880
- Add to Search Bar 2.0: http://firefox.maltekraus.de/extensions/add-to-search-bar
- Boss Key 0.2.1: http://hall.sociz.com/index.php?showtopic=17805
- BugMeNot 2.2: http://www.google.com/search?q=Firefox%20BugMeNot
- Charset Switcher 3.5.20100520: https://addons.mozilla.org/firefox/addon/8493/
- Context Search 0.4.5: http://www.cusser.net
- CS Lite 1.4: http://addons.mozilla.org
- Custom Buttons 0.0.4.9: http://xsms.nm.ru/custombuttons/en/
- CuteButtons - Crystal SVG 0.2.5: http://choggi.dyndns.org/misc/CuteButtonsCrystalSVG/
- CuteMenus - Crystal SVG 1.9.3: http://www.cutemenuproject.com/
- Download Statusbar 0.9.7: http://downloadstatusbar.mozdev.org/
- Easy DragToGo 1.1.2.4: http://addons.sociz.com/firefox/700/
- Element Properties 6: http://www.google.com/search?q=Firefox%20Element%20Properties
- Fast Translation 1.07: http://www.google.com/search?q=Firefox%20Fast%20Translation
- File Title 1.3: http://www.jasnapaka.com/mozilla/filetitle/
- Find Toolbar Tweaks 2.2.0: http://homepage3.nifty.com/georgei/extension/ftt_en.html
- Fission 1.0.9: http://mozilla.zeniko.ch/fission.html
- FlashGot 1.2.1.28: http://flashgot.net
- functions for keyconfig 1.4.0: http://www.pqrs.org/~tekezo/firefox/extensions/functions_for_keyconfig/
- Greasemonkey 0.8.20100408.6: http://www.greasespot.net/
- Hide Find Bar 1.3.1: http://hidefindbar.jaredmcateer.com
- Hide Menubar 3.6.20100626: http://forum.moztw.org/viewtopic.php?t=15303
- IE Tab Plus 1.92.20100607: http://coralietab.mozdev.org
- keyconfig 20080929: http://mozilla.dorando.at/
- Locationbar² 1.0.5: http://en.design-noir.de/mozilla/locationbar2/
- MR Tech Toolkit 6.0.4: http://www.mrtech.com/extensions/
- Organize Status Bar 0.6.4: http://yellow5.us/firefox/osb/
- Pearl Crescent Page Saver Basic 2.6: http://pearlcrescent.com/products/pagesaver/
- Ru-Board Navigation 1.6.0: http://forum.mozilla-russia.org/viewtopic.php?id=4207
- Save Images 0.6.8: http://www.google.com/search?q=Firefox%20Save%20Images
- Saved Password Editor 1.5.3: http://www.google.com/search?q=Firefox%20Saved%20Password%20Editor
- Searchbar Autosizer 1.4.5: http://searchbarautosizer.mozdev.org
- SkipScreen 0.5.5s: http://skipscreen.com/
- SmileySidebar 1.3.3: http://www.google.com/search?q=Firefox%20SmileySidebar
- SortPlaces 1.6.8: http://www.andyhalford.com/sortplaces/index.html
- StatusbarEx 0.2.19: http://doudehou.googlepages.com/statusbarex
- Stay-Open Menu 1.5.4: http://www.shadetreeapiary.com/extension/
- Stylish 1.0.9: http://userstyles.org/
- Tab Mix Plus 0.3.8.4: http://tmp.garyr.net
- Toolbar Buttons 0.6.0.8: http://codefisher.org/toolbar_button/
- TotalToolbar 1.7: http://totaltoolbar.mozdev.org
- UnMHT 5.6.0: http://www.unmht.org/unmht/en_index.html
- Update Bookmark 0.0.5.1: http://www.chuonthis.com/extensions/
- URL Tooltip 1.2.1: http://www.google.com/search?q=Firefox%20URL%20Tooltip
- WebMail Notifier 2.5.2: http://webmailnotifier.mozdev.org/
- Xmarks 3.7.9: http://www.xmarks.com/
- Zen.Weather 0.3.1: http://www.google.com/search?q=Firefox%20Zen.Weather

Установленные темы: [2]
- Camifox 3.6.5: http://tylerc.com/firefox/
- Стандартная: http://www.mozilla.org/

Установленные плагины: (12)
- Google Earth Plugin
- Google Update
- IE Tab Plug-in
- Java Deployment Toolkit 6.0.210.7
- Java(TM) Platform SE 6 U21
- Microsoft® DRM
- Mozilla Default Plug-in
- RealPlayer Version Plugin
- RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit)
- Shockwave Flash (Plugin Version: 10.1.53.64)
- Windows Media Player Plug-in Dynamic Link Library
- Windows Presentation Foundation


3. А как это можно проверить и, если есть проблемы, устранить их? Если просто зайти по ссылке всё играет!

Кнопка создает браузер и загружает в него страницу как в обычной вкладке.

виртуальный браузер в памяти?

Добавь пожалуйста возможность по нажатии ПКМ на пункте меню обычное открытие ссылки во вкладке.


Думал, может проблема в работе через прокси - подключился по впн, та же картина - тишина :(

Отредактировано Inko7 (03-08-2010 10:40:20)

Отсутствует

 

№194203-08-2010 20:17:20

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Inko7 пишет:

Везет тебе, а у меня почему-то облом

У меня ненадежно работает. Первый выбор воспроизводит всегда, остальные - иногда.
Короче, предлагаю считать, что реализовать невозможно, прошу прощения, что зазря обнадежил.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№194304-08-2010 10:21:30

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 900
UA: Firefox 3.6

Re: Custom Buttons

Anton
спасибо за попытку!
Последняя просьба: можно переделать кнопку (твой прототип) так, чтобы по нажатии ЛКМ в меню станция все таки открывалась в новой вкладке, этот пункт отмечался "галочкой", при наведении курсора на кнопку показывался текущий трек (эта штука просто супер!!!), а при повторном нажатии эта вкладка просто закрывалась и "галка" снималась?
Помоги пожалуйста!

Отсутствует

 

№194404-08-2010 16:48:40

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Inko7
Вот что-то вроде:

скрытый текст

Выделить код

Код:

var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
              xmlns:cb="http://xsms.nm.ru/custombuttons/"
              oncommand="this. parentNode. cbController. handleMenuitem (event);">
        <menuitem label="36"
              type="checkbox"
              cb:url={"http://www.101.ru/?an=port_playmp3&channel=36&bit=1&serv="}/>
        <menuitem label="37"
              type="checkbox"
              cb:url={"http://www.101.ru/?an=port_playmp3&channel=37&bit=1&serv="}/>
        <menuitem label="38"
              type="checkbox"
              cb:url={"http://www.101.ru/?an=port_playmp3&channel=38&bit=1&serv="}/>
      </menupopup>;

this. appendChild (custombuttonsUtils. makeXML (menu));
this. type = "menu";
this. orient = "horizontal";

this. cbController =
{
    btn: null,
    tab: null,
    evtHandle: true,
    
    handleMenuitem: function (event)
    {
        var oldTab = this. tab;
        if (oldTab)
        {
            var br = gBrowser. getBrowserForTab (oldTab);
            br. loadURI ("about:blank");
        }
        this. btn. setAttribute ("tooltiptext", "");
        var menuitem = event. target;
        var checked = menuitem. getAttribute ("checked");
        this. clearMenu ();
        if (checked)
        {
            var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url");
            this. tab = gBrowser. addTab (url);
            menuitem. setAttribute ("checked", "true");
        }
        if (oldTab)
        {
            this. evtHandle = false;
            if (oldTab)
                gBrowser. removeTab (oldTab);
            this. evtHandle = true;
        }
    },
    
    showTooltip: function ()
    {
        try
        {
            var doc = gBrowser. getBrowserForTab (this. tab). contentDocument;
            var ts = doc. getElementById ("titlesong");
            this. btn. setAttribute ("tooltiptext", ts. textContent);
        } catch (e) {}
    },
    
    clearMenu: function ()
    {
        var mp = this. btn. getElementsByTagName ("menupopup") [0];
        for (var i = 0; i < mp. childNodes. length; i++)
            mp. childNodes [i]. removeAttribute ("checked");
    },
    
    handleEvent: function (event)
    {
        if (this. evtHandle && (event. type == "TabClose") && (this. tab == event. originalTarget))
        {
            this. clearMenu ();
            this. tab = null;
        }
    }
};
this. cbController. btn = this;
 
this. onmouseover = function ()
{
    this. cbController. showTooltip ();
};

this. onDestroy = function ()
{
    gBrowser. removeEventListener ("TabClose", this. cbController, true);
};

gBrowser. addEventListener ("TabClose", this. cbController, false);


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№194504-08-2010 17:30:56

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 900
UA: Firefox 3.6

Re: Custom Buttons

Anton
очень даже хорошо! Обнаружил небольшие ошибки:
1. Вкладка открывается не активной и звука не будет пока её не выберешь. Можно передавать ей фокус? Особенность FF (во всяком случае у меня так), если на странице есть флеш, то он запускается только тогда, когда вкладка становится активной.
2. Станции прекрасно переключаются между собой и все отображается во всплывающей подсказке, но до тех пор, пока какую-нибудь из них не выключить (выбрать повторно). При этом вкладка нормально закрывается, но после этого при выборе станции уже ничего не открывается, хотя "галка" появляется. Можно теперь хоть возле каждого пункта "галки" расставлять/убирать...
Перезагрузка FF и опять все в норме.
Сможешь исправить?

Отсутствует

 

№194604-08-2010 17:56:56

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Inko7 пишет:

Можно передавать ей фокус?

Надо заменить

Выделить код

Код:

this. tab = gBrowser. addTab (url);

на

Выделить код

Код:

gBrowser. selectedTab = this. tab = gBrowser. addTab (url);

Inko7 пишет:

2. Станции прекрасно переключаются между собой и все отображается во всплывающей подсказке, но до тех пор, пока какую-нибудь из них не выключить (выбрать повторно). При этом вкладка нормально закрывается, но после этого при выборе станции уже ничего не открывается, хотя "галка" появляется. Можно теперь хоть возле каждого пункта "галки" расставлять/убирать...

У меня похожая ситуация. Я так понимаю это особенность флэш плагина или сервера.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№194704-08-2010 18:13:31

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 900
UA: Firefox 3.6

Re: Custom Buttons

Anton пишет:

У меня похожая ситуация. Я так понимаю это особенность флэш плагина или сервера.

выходит, не получится ничего с этим сделать? Просто не пользовать повторное нажатие, а закрывать вкладку вручную?
Можно тогда отключить в коде случайный повторный выбор пункта, чтоб глюк не проявлялся?
А так, все просто суперово!

Отсутствует

 

№194804-08-2010 18:30:59

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Custom Buttons

Inko7 пишет:

выходит, не получится ничего с этим сделать?

Я не знаю, что с этим делать.

Inko7 пишет:

Можно тогда отключить в коде случайный повторный выбор пункта, чтоб глюк не проявлялся?

А смысл ?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№194904-08-2010 18:34:01

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 900
UA: Firefox 3.6

Re: Custom Buttons

Anton
ясно
спасибо большое! буду юзать этот вариант!

вопрос в догонку: а можно кодом скрыть определенную вкладку (эту самую :)) с панели вкладок?

Отредактировано Inko7 (04-08-2010 18:41:12)

Отсутствует

 

№195008-08-2010 01:32:26

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4296
UA: Firefox 3.6

Re: Custom Buttons

Добавление сочетаний клавиш на примере кнопки для закрепления/открепления вкладок: pinTabs.js
Придумывать хоткеи было лень. :P
Работать будет только в новых окнах или после перезапуска. Повторные вызовы инициализации никак не проверяются.

Отредактировано Infocatcher (08-08-2010 01:36:25)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

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