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

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

№285130-07-2011 19:54:52

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

Re: Custom Buttons

iDev.Pi пишет

таймер автозакрытия панели (с момента как файндбар перестал быть :selected)

Проще изначально открывать самозакрывающийся быстрый поиск (нажать /).
Если на нем нужны кнопки, то

Выделить код

Код:

#FindToolbar > .findbar-container > * {
    display: -moz-box !important;
}

И настройка accessibility.typeaheadfind.timeout

При reloadSessions: true используется утянутый из Session Manager'а механизм обновления восстанавливаемых вкладок.

А еще с ним баг какой-то. Утянутая часть кода работает, но в SM вкладки обновляются, а при открытии из кнопки – нет.


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

Отсутствует

 

№285230-07-2011 20:22:54

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Aurora 7.0

Re: Custom Buttons

iDev.Pi
middlemouse.paste = true, но только для всех полей, не только файндбара.

Отсутствует

 

№285330-07-2011 20:44:18

OverClocked
Участник
 
Группа: Members
Зарегистрирован: 30-07-2011
Сообщений: 4
UA: Aurora 7.0

Re: Custom Buttons

Установил я кнопку Session Bookmarks 0.2.0pre21, но это совсем не то что мне надо, мне нужно чтобы при нажатии на кнопку, URL текущей страницы записывался в (указанный в коде) txt-файл в виде простого списка в таком виде :

Пример
http://www.kinopoisk.ru/
http://xsms.nm.ru/custombuttons/#opisanie
http://forum.mozilla-russia.org/viewtopic.php?id=9591&p=128
и так далее

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

Отсутствует

 

№285430-07-2011 20:59:37

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 5.0

Re: Custom Buttons

Infocatcher, подскажи, пожалуйста, что нужно изменить/добавить в коде:

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

Выделить код

Код:

var t = content.getSelection().toString();
if(t) {gBrowser.selectedTab = gBrowser.addTab("http://www.youtube.com/results?search_query="+t+"&aq=f");}
else {getBrowser (). selectedTab = getBrowser (). addTab ("http://www.youtube.com/"); }

чтобы поиск работал с кириллицей?
С латиницей все в порядке, работает.

Аналогичный поиск по Гуглу кириллицу понимает, отображает и ищет корректно, а Ютуб - нет.

Отредактировано slbgz (31-07-2011 01:28:46)

Отсутствует

 

№285530-07-2011 21:09:40

LongLogin
Участник
 
Группа: Members
Зарегистрирован: 30-01-2011
Сообщений: 2083
UA: Firefox 4.0

Re: Custom Buttons

OverClocked

Поставь QuickNote 0.6.0.6, не 0.6.0.10
потом эту кнопку
при нажатии она сохраняет адрес страницы (соответствующая галочка в настройках) в этот блокнот, потом это можно сохранить в txt-файл

Отредактировано LongLogin (30-07-2011 21:13:13)

Отсутствует

 

№285630-07-2011 21:45:26

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

Re: Custom Buttons

slbgz
Это от сервера зависит, но обычно надо делать encodeURIComponent() для текста запроса.


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

Отсутствует

 

№285730-07-2011 22:27:26

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Nightly 8.0

Re: Custom Buttons

Kamui пишет

middlemouse.paste = true, но только для всех полей, не только файндбара.

спасибо, сойдёт

Infocatcher пишет

Проще изначально открывать самозакрывающийся быстрый поиск (нажать /).

ну привычка у меня ctrl+F юзать а не мучаться с этим / который не работает если раскладка выбрана не английская. Так что всё равно нужно кнопку, которая хотя бы подменяет хоткей ctrl+f на /
а раз уж кнопка - то неплохо бы и счётчик найденных фраз как в той готовой КБ.

bunda1 пишет

удали в коде

ок, спасибо

bunda1 пишет

setTimeout(function(FindBarclose) {gFindBar.close(); }, 10000);
gFindBar.addEventListener("???????", FindBarclose, false);
пока еще не умею, может позже

А можно лучше тогда просто вызывать не ту панель что по CTRL+F, а ту, что по / как написал Infocatcher?


mzfx

Отсутствует

 

№285830-07-2011 23:07:03

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

Re: Custom Buttons

iDev.Pi пишет

А можно лучше тогда просто вызывать не ту панель что по CTRL+F, а ту, что по / как написал Infocatcher?

папробую.

можно в кнопке
//настройка функций кликов мыши(Mouse Click settings)...................................................
this.leftclick   = function(evt){
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
заменить на
gFindBar.startFind(gFindBar.FIND_TYPEAHEAD);
gFindBar._setFindCloseTimeout();

падрегулировать
accessibility.typeaheadfind.timeout
но теперь FindBar будет закрываться от любова клика на странице :(

Отредактировано bunda1 (30-07-2011 23:21:41)

Отсутствует

 

№285931-07-2011 00:07:55

OverClocked
Участник
 
Группа: Members
Зарегистрирован: 30-07-2011
Сообщений: 4
UA: Firefox 4.0

Re: Custom Buttons

LongLogin

Большое вам спасибо!!

Отсутствует

 

№286031-07-2011 00:22:23

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

Re: Custom Buttons

OverClocked
добавляет пункт в меню таба - Copy All URLs
/*Initialization Code*/

Выделить код

Код:

//Copy All URLs
(function() {
    var templates = {
        'text':{
            'header':'',
            'body':'%title%\n%url%\n\n',
            'footer':''
        }
    };
    var htmlEscape = function(s) {
        s = s.replace(/&/g, "&");
        s = s.replace(/>/g, ">");
        s = s.replace(/</g, "&lt;");
        s = s.replace(/"/g, "&quot;");
        return s;
    };
    var getTabs = function(){
        var tabNodes = document.popupNode.parentNode.childNodes;
        var tabs = new Array;
        for (i=0;i<tabNodes.length;i++){
            tabs.push({'title':tabNodes[i].label, 'url':gBrowser.getBrowserForTab(tabNodes[i]).contentWindow.location.href});
        }
        return tabs;
    };
    var formOutput = function(templateId, tabs){
        var string = new String;
        var template = templates[templateId];
        string += template.header;
        for(i=0;i<tabs.length;i++){
            string += template.body.replace(/%title%/g, htmlEscape(tabs[i].title)).replace(/%url%/g, htmlEscape(tabs[i].url));
        }
        return string += template.footer;
    }
    var putClipboard = function(string){
        Cc["@mozilla.org/widget/clipboardhelper;1"]
        .getService(Ci.nsIClipboardHelper)
        .copyString(string);
        dump("[save tabs]"+"copied to Clipboard\n");
    }
    var main = function(templateId){
        var tabs = getTabs();
        var output = formOutput(templateId, tabs);
        putClipboard(output);
    };
    var menuitem1 = document.createElement("menuitem");
    menuitem1.setAttribute("label", "[text] Copy All URLs");
    menuitem1.addEventListener("command", function() { main('text'); }, false);
    setTimeout(function() {
        gBrowser.mStrip.childNodes[1].appendChild(document.createElement("menuseparator"));
        gBrowser.mStrip.childNodes[1].appendChild(menuitem1);
    }, 0);
})();

Отредактировано bunda1 (31-07-2011 00:39:50)

Отсутствует

 

№286131-07-2011 00:28:15

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Nightly 8.0

Re: Custom Buttons

bunda1 пишет

но теперь FindBar будет закрываться от любова клика на странице :(

так не катит :(


mzfx

Отсутствует

 

№286231-07-2011 00:37:21

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

Re: Custom Buttons

iDev.Pi пишет
bunda1 пишет

но теперь FindBar будет закрываться от любова клика на странице :(

так не катит :(

может позже что то придумаю.

Выделить код

Код:

//autoclose Findbar..........
(function(){

function go() {gFindBar.close();}

function on() {
    timeoutId = setTimeout(go, 5000)
}

function off() {
    clearTimeout(timeoutId)
}
gFindBar.addEventListener('click',off, false);
gBrowser.addEventListener('mousedown',on, false);
})();

красиво, но неработает как надо.

Отредактировано bunda1 (31-07-2011 02:28:00)

Отсутствует

 

№286331-07-2011 01:15:54

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 5.0

Re: Custom Buttons

Infocatcher пишет

slbgz
Это от сервера зависит, но обычно надо делать encodeURIComponent() для текста запроса.

Супер! Спасибо большое, заработало! :)

Отсутствует

 

№286431-07-2011 01:22:03

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

Re: Custom Buttons

Session Bookmarks 0.2.0pre22 (2011-07-31)
Исправлено обновление при восстановлении сессии (reloadSessions: true).


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

Отсутствует

 

№286531-07-2011 05:03:40

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

Re: Custom Buttons

iDev.Pi
/*Initialization Code*/

Выделить код

Код:

//Findbar autoclose ..........
(function(){

this.clickPage = function(event) {gBrowser.addEventListener('mousedown',on, false);};

function go() {
clickPage(event);
gFindBar.close();}

function on() {
gBrowser.removeEventListener('mousedown',on, false);
  timeoutId = setTimeout(go, 5000)}
  
function off() {
clickPage(event);
   clearTimeout(timeoutId)}
   
gFindBar.addEventListener('click',off, false);
clickPage(event);
})();

timeoutId = setTimeout(go, 5000)} это микросекунды

Отредактировано bunda1 (31-07-2011 05:09:59)

Отсутствует

 

№286631-07-2011 05:43:10

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Nightly 8.0

Re: Custom Buttons

bunda1 пишет

//Findbar autoclose ..........

а зачем? если вызывать не дефолтный файндбар, а файндбар по кнопке "/" то он подчиняется префу accessibility.typeaheadfind.timeout.
если можно, то пожалуйста, просто подправь для меня изначальную кнопку, только чтобы:
1. По ctrl+f вызывался файндбар кнопки "/"
2. Работал каунтер найденных слов на странице как у тебя в кнопке
3. В кнопку поместить стиль #FindToolbar > .findbar-container > * { display: -moz-box !important; } и всё.
4. С тех пор как я выставил себе middlemouse.paste в true - я теперь могу мидл-кликать на textarea, а не на кнопку, но было бы совсем зашибись иметь хоткей ctrl+alt+f который бы делал сразу 2 действия - открывал бы файндбар и вставлял бы в поиск текст из буфера. Эту фичу, кстати, можешь добавить и себе в кнопку - вдруг кому удобней с клавиатуры поиск делать, не трогая мышку.

Получившийся код, я так понимаю, весь будет для "инициализации", а значит его можно будет запихнуть в другую имеющуюся кнопку, что сэкономит место на тулбаре.


mzfx

Отсутствует

 

№286731-07-2011 06:09:52

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

Re: Custom Buttons

iDev.Pi
позже сделаю.

2. Работал каунтер найденных слов на странице как у тебя в кнопке

не понял o чем речь

вызывался файндбар кнопки "/"

файндбар кнопки "/" будет закрываться от любова клика на странице, неудобно.

Отсутствует

 

№286831-07-2011 06:36:08

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Nightly 8.0

Re: Custom Buttons

bunda1 пишет

не понял o чем речь

счётчик кол-ва найденных символосочетаний из поискового запроса на странице. У тебя же в кнопке он вроде есть?

bunda1 пишет

файндбар кнопки "/" будет закрываться от любова клика на странице, неудобно.

ааа, так это такое поведение у "/"... раньше как-то и не замечал (пользуюсь то CTRL+F + дополнением авто скрывающим его по таймеру).

Отредактировано iDev.Pi (31-07-2011 06:38:11)


mzfx

Отсутствует

 

№286931-07-2011 13:27:56

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

Re: Custom Buttons

iDev.Pi пишет

если можно, то пожалуйста, просто подправь для меня изначальную кнопку, только чтобы:
1. По ctrl+f вызывался файндбар кнопки "/"
2. Работал каунтер найденных слов на странице как у тебя в кнопке
3. В кнопку поместить стиль #FindToolbar > .findbar-container > * { display: -moz-box !important; } и всё.
4. было бы совсем зашибись иметь хоткей ctrl+alt+f который бы делал сразу 2 действия - открывал бы файндбар и вставлял бы в поиск текст из буфера. Эту фичу, кстати, можешь добавить и себе в кнопку - вдруг кому удобней с клавиатуры поиск делать, не трогая мышку.

Получившийся код, я так понимаю, весь будет для "инициализации", а значит его можно будет запихнуть в другую имеющуюся кнопку, что сэкономит место на тулбаре.

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

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

Выделить код

Код:

//FindBar Key config............................................
addEventListener('keydown', function (event){

//ctrl+ F...
if ((event.ctrlKey) && ((event.keyCode == 0x46) || (event.keyCode == 0x4A)))
{
event.preventDefault();
event.stopPropagation();
gFindBar.startFind(gFindBar.FIND_TYPEAHEAD);
gFindBar._setFindCloseTimeout();}

//ctrl+ ALT...
if ((event.ctrlKey) && ((event.keyCode == 0x12) || (event.keyCode == 0x4A)))
{
gFindBar.startFind(gFindBar.FIND_TYPEAHEAD);
gFindBar._setFindCloseTimeout();
goDoCommand("cmd_selectNone");
goDoCommand("cmd_paste");}
}, false);



//find bar, показать количество совпадений(find bar,show the number of matches)....................
(function() {
    //add label to findbar
    var status = document.getAnonymousElementByAttribute(gFindBar, 'anonid', 'match-case-status');
    var sep = document.createElement("toolbarspacer");
    var count = document.createElement("label");
    count.hidden = true;
    status.parentNode.insertBefore(sep, status);
    status.parentNode.insertBefore(count, status);//findbar-container


    gFindBar.__proto__._foundMatches = count;
    
    gFindBar.__proto__._updateMatchesCount = function(aRes) {
        if (!this._updateMatchCountTimeout)
            window.clearTimeout(this._updateMatchCountTimeout);
        this._updateMatchCountTimeout =
                window.setTimeout(function(aRes, aSelf) {
                    aSelf._updateMatchesCountWorker(aRes);
                }, 0, aRes, this);
    }

    gFindBar.__proto__._updateMatchesCountWorker = function(aRes) {
        var word = this._findField.value;
        if (aRes == this.nsITypeAheadFind.FIND_NOTFOUND || !word) {
            this._foundMatches.hidden = true;
            this._foundMatches.value = "";
        }
        else {
            var matchesCount = this._countMatches(word).toString();
            if (matchesCount != "0") {
                if (matchesCount == "1")
                    this._foundMatches.value = matchesCount +" \hits ";
                else if (matchesCount == "-1") {
                    var matchLimit = 100;
                    this._foundMatches.value = " \> 100 hits";
                    //                    var key = (matchLimit > 1000) ? "Decrease" : "Increase";
                } else
                    this._foundMatches.value = matchesCount +" \hits";
                this._foundMatches.hidden = false;
            }
            else {
                this._foundMatches.hidden = true;
                this._foundMatches.value = "";
            }

            window.clearTimeout(this._updateMatchCountTimeout);
        }
    }

    gFindBar.__proto__._countMatches = function(aWord, aWindow) {
        var win = aWindow || this.browser.contentWindow;

        var countFound = 0;
        for (var i = 0, count; win.frames && i < win.frames.length; i++) {
            if ((count = this._countMatches(aWord, win.frames[i])) != -1)
                countFound += count;
            else
                return count;
        }

        var doc = win.document;
        if (!doc || !(doc instanceof HTMLDocument))
            return countFound;

        var body = doc.body;

        var count = body.childNodes.length;
        var searchRange = doc.createRange();
        var startPt = doc.createRange();
        var endPt = doc.createRange();

        searchRange.setStart(body, 0);
        searchRange.setEnd(body, count);

        startPt.setStart(body, 0);
        startPt.setEnd(body, 0);
        endPt.setStart(body, count);
        endPt.setEnd(body, count);

        var retRange = null;
        var finder = Components.classes["@mozilla.org/embedcomp/rangefind;1"]
                .createInstance()
                .QueryInterface(Components.interfaces.nsIFind);

        finder.caseSensitive = this._shouldBeCaseSensitive(aWord);

        var matchLimit = 100;
        while ((retRange = finder.Find(aWord, searchRange, startPt, endPt))) {
            if (this._rangeIsVisible(retRange, win)) {
                if (this._findMode == this.FIND_LINKS) {
                    if (this._rangeStartsInLink(retRange))
                        ++ countFound;
                }
                else
                    ++ countFound;
            }
            if (countFound == matchLimit) {
                countFound = -1;
                break;
            }
            startPt = doc.createRange();
            startPt.setStart(retRange.startContainer, retRange.startOffset + 1);
        }

        return countFound;
    }

    gFindBar.__proto__._rangeIsVisible = function(aRange, aWindow) {
        var node = aRange.startContainer;

        if (node.nodeType == node.ELEMENT_NODE) {
            if (node.hasChildNodes) {
                var childNode = node.childNodes[aRange.startOffset];
                if (childNode)
                    node = childNode;
            }
        }

        while (node && node.nodeType != node.ELEMENT_NODE)
            node = node.parentNode;

        // There is no perfect way to check if a node is visible in JavaScript,
        // so use the best measures we can have
        if (node) {
            var style = aWindow.getComputedStyle(node, "");
            if (style) {
                if (style.visibility == "hidden" ||
                        style.visibility == "collapse" ||
                        style.display == "none")
                    return false;
                if (style.left != "auto" && style.width != "auto")
                    if (style.left < 0 && style.left + style.width < 0)
                        return false;
                if (style.top != "auto" && style.height != "auto")
                    if (style.top < 0 && style.top + style.height < 0)
                        return false;
            }
        }

        return true;
    }

    gFindBar.__proto__._rangeStartsInLink = function(aRange) {
        var isInsideLink = false;

        var node = aRange.startContainer;

        if (node.nodeType == node.ELEMENT_NODE) {
            if (node.hasChildNodes) {
                var childNode = node.childNodes[aRange.startOffset];
                if (childNode)
                    node = childNode;
            }
        }

        const XLink_NS = "http://www.w3.org/1999/xlink";
        do {
            if (node instanceof HTMLAnchorElement) {
                isInsideLink = node.hasAttribute("href");
                break;
            }
            else if (typeof node.hasAttributeNS == "function" &&
                    node.hasAttributeNS(XLink_NS, "href")) {
                isInsideLink = (node.getAttributeNS(XLink_NS, "type") == "simple");
                break;
            }

            node = node.parentNode;
        } while (node);

        return isInsideLink;
    }

    //insert count function to original
    eval("gFindBar._updateCaseSensitivity=" + gFindBar._updateCaseSensitivity.toString().slice(0, -1) + "this._updateMatchesCount();}");
    eval("gFindBar._updateStatusUI=" + gFindBar._updateStatusUI.toString().slice(0, -1) + "this._updateMatchesCount();}");
})();



// FindBar "/" style....................................................................... 
var sId = "__customButtonsStyle__" + this.id; // Unique style "id"
var cssStr = <><![CDATA[

#FindToolbar > .findbar-container > * { display: -moz-box !important; }

    ]]></>
    .toString()
    .replace(/%button%/g, "#" + this.id);

function sheet(cssStr, removeFlag) {
    var cc = Components.classes;
    var sss = cc["@mozilla.org/content/style-sheet-service;1"]
        .getService(Components.interfaces.nsIStyleSheetService);
    var ios = cc["@mozilla.org/network/io-service;1"]
        .getService(Components.interfaces.nsIIOService);
    var data = "data:text/css," + encodeURIComponent(cssStr);
    var uri = ios.newURI(data, null, null);
    if(sss.sheetRegistered(uri, sss.AGENT_SHEET))
        sss.unregisterSheet(uri, sss.AGENT_SHEET);
    if(removeFlag)
        return;
    sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
    window[sId] = cssStr;
}
if(!(sId in window))
    sheet(cssStr);
else if(window[sId] != cssStr) {
    sheet(window[sId], true);
    sheet(cssStr);
}

Отредактировано bunda1 (31-07-2011 13:36:26)

Отсутствует

 

№287031-07-2011 14:38:12

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Nightly 8.0

Re: Custom Buttons

bunda1
ооо, спасибо огромное! то, что надо!
в принципе-то, что квик файндбар скрывается при клике на странице - может даже и к лучшему.
только почему ты хоткей сделал ctrl+alt а не ctrl+alt+f? так не очень удобно.
и ещё мини-баг (или даже мини-фича?): если выделить что-то на странице и нажать ctrl-c, то оно уходит в буфер обмена, но ведь если я нажму ctrl-f то оно не должно автоматом же вставлять из буфера текст в текстовое поле поиска, однако если скопированный в буфер текст остаётся выделенным, то именно так и происходит. Если выделение снять - то файндбар открывается без автовставки текста из буфера.
я не уверен баг ли это или фича, потому что, в принципе, так мне даже и мидл-кликать не надо после ctrl-c + ctrl-f, но с другой стороны для этого же есть ctrl+alt теперь.
Если это фича, то её бы слегка переделать: сделать так, чтобы ctrl+alt сначала делал бы проверку: "а есть ли чего-нибудь выделенной юзером на странице?" и если "да" - то "открыть поиск по выделенному элементу", а если "нет" - то "открыть поиск по тексту из буфера". Это будет эдакой "умной" проверкой. Ну а CTRL+F, всё-таки, я считаю не должен иметь такую проверку на выделение текста на странице.


mzfx

Отсутствует

 

№287131-07-2011 15:16:20

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

Re: Custom Buttons

iDev.Pi пишет

bunda1
только почему ты хоткей сделал ctrl+alt а не ctrl+alt+f? так не очень удобно.
Если это фича, то её бы слегка переделать: сделать так, чтобы ctrl+alt сначала делал бы проверку: "а есть ли чего-нибудь выделенной юзером на странице?" и если "да" - то "открыть поиск по выделенному элементу", а если "нет" - то "открыть поиск по тексту из буфера". Это будет эдакой "умной" проверкой. Ну а CTRL+F, всё-таки, я считаю не должен иметь такую проверку на выделение текста на странице.

ctrl+alt а не ctrl+alt+f - просто, пока не умею по другому,

это не баг или фича, это Firefox default.
проверку по ctrl+alt не могу сделать, не умею.

Отсутствует

 

№287231-07-2011 15:43:32

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 5.0

Re: Custom Buttons

Infocatcher пишет

Session Bookmarks 0.2.0pre22 (2011-07-31)
Исправлено обновление при восстановлении сессии (reloadSessions: true).

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

Отредактировано slbgz (31-07-2011 18:00:19)

Отсутствует

 

№287331-07-2011 20:15:24

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

Re: Custom Buttons

Session Bookmarks 0.2.0pre23 (2011-07-31)
Исправлено перетаскивание закладок.


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

Отсутствует

 

№287431-07-2011 22:06:34

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 5.0

Re: Custom Buttons

Спасибо.  Работает. :)

Отсутствует

 

№287502-08-2011 17:36:48

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

Re: Custom Buttons

Прошу помощи.
Как зделать что бы это меню менялась зависимости от настроек в about:config
true показывать ●,  false не показывать?
Иными словами;
как переключить this.circle=""; на this.circle="●"; если if (custombuttonsUtils. getPrefs ("FindBar.autohide", true))
как переключить this.nocircle=""; на this.nocircle="●"; если if (custombuttonsUtils. getPrefs ("FindBar.(ctrl+ALT)find_from_clipboard", true))
Как сделать это красиво?
thumb23480125.jpg
код меню

Выделить код

Код:

this.circle = "●";
this.nocircle = "";

var Cb = custombuttons;

this.FBautohide = function() {
// toggle preference
var s = "FindBar.autohide";
custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
}


this.FBfind_Key = function() {
// toggle preference
var s = "FindBar.(ctrl+ALT)find_from_clipboard";
custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
}

// Our menu items
this.ss = [
  { label: this.circle+'FindBar(7 sec) autohide', cmd: 'document.popupNode.FBautohide()', sItemId: '' },
  { label: this.nocircle+'Findbar(ctrl+ ALT),find from clipboard', cmd: 'document.popupNode.FBfind_Key()', sItemId: ''}];
   
// Our Initialization function for creating the context menu, setting up menuitems and telling
// custombuttons2 extension to put cb context in a submenu
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;
    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);

код кнопки, в инициализацию. 

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

Выделить код

Код:

this.image = "http://www.mozilla.org/favicon.ico";
this.circle = "●";
this.nocircle = "";


//проверить наличие строк в about:config и создать если не существует(Add preferences)........................................
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
var f;
try{
    f = prefs.getBoolPref("FindBar.autohide");
}
catch(e){
    prefs.setBoolPref("FindBar.autohide", false);
}

try{
    f = prefs.getBoolPref("FindBar.(ctrl+ALT)find_from_clipboard");
}
catch(e){
    prefs.setBoolPref("FindBar.(ctrl+ALT)find_from_clipboard", false);
}


//настройка функций кликов мыши(Mouse Click settings)...................................................
this.leftclick   = function(evt){
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
}

this.midclick = function(evt) {
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
goDoCommand("cmd_selectNone");
goDoCommand("cmd_paste"); 
}

this. gQuot = {};
this. gQuot. __proto__ = custombuttons. gQuot;
this. gQuot. dcDelay = 0;
this. setAttribute ('onclick', 'this.gQuot.mHandler(event, this)');

this.setAttribute("onmouseover", "if (custombuttons) custombuttons.ButtonBrt(event);" );
this.setAttribute("onmouseout", "if (custombuttons) custombuttons.ButtonBrt(event);" );


//настройка меню(CB menu settings)...................................................
var Cb = custombuttons;

this.FBautohide = function() {
// toggle preference
var s = "FindBar.autohide";
custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
}


this.FBfind_Key = function() {
// toggle preference
var s = "FindBar.(ctrl+ALT)find_from_clipboard";
custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
}

// Our menu items
this.ss = [
  { label: this.circle+'FindBar(7 sec) autohide', cmd: 'document.popupNode.FBautohide()', sItemId: '' },
  { label: this.nocircle+'Findbar(ctrl+ ALT),find from clipboard', cmd: 'document.popupNode.FBfind_Key()', sItemId: ''}];
   
// Our Initialization function for creating the context menu, setting up menuitems and telling
// custombuttons2 extension to put cb context in a submenu
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;
    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);



//FindBar, автоматически закрыть(autohide Findbar).................................
(function(){

this.clickPage = function(event) {gBrowser.addEventListener('mousedown',on, false);};

function go() {
if (custombuttonsUtils. getPrefs ("FindBar.autohide", true))
{
gFindBar.close();
clickPage(event);}
else
clickPage(event);
}

function on() {
gBrowser.removeEventListener('mousedown',on, false);
timeoutId = setTimeout(go, 3000)}//7 сек(7 sec)
  
function off() {
clickPage(event);
   clearTimeout(timeoutId)}
   
gFindBar.addEventListener('click',off, false);
clickPage(event);
})();


//FindBar, сочетания клавиш(Key config).........................................................
addEventListener('keydown', function (event){

//FindBar(ctrl+ F)показать - скрыть(Toggle Find Bar).........
if ((event.keyCode==0x46)&&(event.ctrlKey))
{
event.preventDefault();
event.stopPropagation();
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();}

//Findbar(ctrl+ ALT), поиск по странице из буфера обмена, find from clipboard.............
if (custombuttonsUtils. getPrefs ("FindBar.(ctrl+ALT)find_from_clipboard", true))
{
if ((event.keyCode==0x12)&&(event.ctrlKey))
{
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
goDoCommand("cmd_selectNone");
goDoCommand("cmd_paste");}}

//FindBar, закрыть любой клавишей клавиатуры(FindBar close, Any key keyboard)..
//else{gFindBar.close();}
}, false);


:(
так тоже не работает,в меню вместо "●" паказывет undefined

Выделить код

Код:

this.onmouseover = function() {if (custombuttonsUtils. getPrefs ("FindBar.autohide", true))this.circle ="●";
else
this.circle = " ";}

так уже что то работает,но непонятно как обновить меню.

Выделить код

Код:

function cset(parametr)
{
   this.par = parametr; 
}
if (custombuttonsUtils. getPrefs ("FindBar.autohide", true)){ 
var cset1 = new cset('●');}
else
var cset1 = new cset('  ');
if (custombuttonsUtils. getPrefs ("FindBar.(ctrl+ALT)find_from_clipboard", true)){ 
var cset2 = new cset('●');}
else
var cset2 = new cset('  ');

Отредактировано bunda1 (04-08-2011 00:22:51)

Отсутствует

 

Board footer

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