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

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№25105-04-2013 18:40:02

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

Re: [CB]Toggle Find+

PEAKTOP пишет

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

Стандартное меню кнопки открывает Ctrl + ПКМ или Snift + ПКМ или двойной ПКМ. А убрал из меню кнопки потому что это лишний код без которого можно обойтись. Но можеш за:

Выделить код

Код:

// цикл добавляет из массива атрибуты и обработчики к пунктам меню .... 
this..........

     button.menuPopup.appendChild(mItem);
});

добавить:

Выделить код

Код:

// добавляем стандартное контекстное меню ....
var separator = document.createElement("menuseparator");
this.menuPopup.appendChild( separator );
var cbContextPopup = document.getElementById("custombuttons-contextpopup");
var clone = cbContextPopup.cloneNode(true);
clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + this.id + "')");
var menu = document.createElement("menu");
menu.setAttribute( "label", "Меню кнопки" );
menu.appendChild( clone );
this.menuPopup.appendChild( menu );

А как ты разместил вкладки внизу страницы ?

Отсутствует

 

№25205-04-2013 19:40:51

PEAKTOP
Участник
 
Группа: Members
Зарегистрирован: 07-10-2009
Сообщений: 116
UA: Firefox 19.0

Re: [CB]Toggle Find+

bunda1 пишет
PEAKTOP пишет

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

Стандартное меню кнопки открывает Ctrl + ПКМ или Snift + ПКМ или двойной ПКМ. А убрал из меню кнопки потому что это лишний код без которого можно обойтись. Но можеш за:

Выделить код

Код:

// цикл добавляет из массива атрибуты и обработчики к пунктам меню .... 
this..........

     button.menuPopup.appendChild(mItem);
});

добавить:

Выделить код

Код:

// добавляем стандартное контекстное меню ....
var separator = document.createElement("menuseparator");
this.menuPopup.appendChild( separator );
var cbContextPopup = document.getElementById("custombuttons-contextpopup");
var clone = cbContextPopup.cloneNode(true);
clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + this.id + "')");
var menu = document.createElement("menu");
menu.setAttribute( "label", "Меню кнопки" );
menu.appendChild( clone );
this.menuPopup.appendChild( menu );

А как ты разместил вкладки внизу страницы ?

Вкладки внизу страницы разместил с помощью расширения Tab Mix Plus
Спасибо за код добавления стандартного меню кнопки, но я его уже скопировал из старой версии. Я думал может это как-то отражается на работе кнопки. Но теперь всё понятно.

Отредактировано PEAKTOP (05-04-2013 19:43:44)


1. Приму из добрых рук щедрый дар - инвайт на Хабр и Лепру
2. Бессмысленно осмысливать смысл неосмысленными мыслями!
3. Прежде чем подумать - подумай!

Отсутствует

 

№25305-04-2013 20:13:04

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

Re: [CB]Toggle Find+

PEAKTOP
Не обязательно вставлять в свои сообщения мои :)

Нащёт опустить панель поиска под вкладки, попробуй удалить в кнопке:

Выделить код

Код:

// Приклеить элемент #FindToolbar к странице( #appcontent ) .................................................
XPCOMUtils.defineLazyGetter(window, "gFindBar", function() {
  let XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  let findbar = document.createElementNS(XULNS, "findbar");
  findbar.setAttribute("browserid", "content");
  findbar.id = "FindToolbar";
  gBrowser.parentNode.insertBefore(findbar, gBrowser);
  findbar.clientTop;
  window.gFindBarInitialized = true;
  return findbar;
});

Рестарт. Но тогда не будут работать настройки: FindBar мини, FindBar сверху, FindBar справа
Но их можно удалить из меню:

Выделить код

Код:

{ label: 'FindBar мини', value: 'FindBar.mini', func: toggleAttribute, cek:''},
  { label: 'FindBar сверху', value: 'FindBar.top', func: toggleAttribute, cek:''},
  { label: 'FindBar справа', value: 'FindBar.right', func: toggleAttribute, cek:''},

Отсутствует

 

№25405-04-2013 23:38:42

Ader
Участник
 
Группа: Members
Зарегистрирован: 05-04-2013
Сообщений: 7
UA: Firefox 20.0

Re: [CB]Toggle Find+

В данной версии (v14) заметил такую странность, если в настройках браузера включена функция => "Искать текст на странице по мере его набора", то копирование на странице с помощью "Ctrl+C" или кнопки на мышке невозможно - панель самопроизвольно открывается, а так же это наблюдается и при нажатии комбинации "Ctrl+любая буква" - панель открывается с уже введённой буквой которая была в комбинации "Ctrl+". В предыдущих версиях такого нет.

И небольшая просьба, можно ли сделать так же как было в предыдущих версиях (v10 и v12),что бы при очистке поля текстового ввода нажатием ПКМ по "Найти", курсор автоматически фокусировался в данном поле,а так же подправить цвет поля текстового ввода когда искомого на странице не найдено на более светлый, а то почти не видно, что ты вообще искал - приходиться выделять текст в поисковом окне.

Отсутствует

 

№25506-04-2013 07:01:37

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 10.0

Re: [CB]Toggle Find+

bunda1
Похоже «виноват» этот кусок кода

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

Выделить код

Код:

// поиск по мере набора если разрешено в 'about:config' и фокус на странице ....
  if ( custombuttons.getPrefs("accessibility.typeaheadfind") && ( 46 < e.keyCode && e.keyCode < 111 )
       && /body|vbox/.test(e.target.localName) ) {
       if ( !this.firstLetter ) window.onkeypress = function(e) { this.firstLetter = String.fromCharCode(e.which) };
       e.preventDefault();
       e.stopPropagation();       
       if ( !gFindBar.hidden ) return;           
       setTimeout(function() { gFindBar.onFindCommand(); gFindBar._findField.value = this.firstLetter }, 0);
       }


Если я правильно понял идею, то может быть так
скрытый текст
Куда-нибудь в начало кода поставить

Выделить код

Код:

var fastFindBar;
setTimeout(function() {
    fastFindBar = document.getElementById("browser-bottombox").firstChild;
    fastFindBar._quickFindTimeoutLength = 100;
    fastFindBar.style.visibility = "collapse";
}, 1000);

А сам кусок тогда

Выделить код

Код:

if (gFindBar.hidden && cbu.getPrefs("accessibility.typeaheadfind")) {
    setTimeout(function() {
        if (!fastFindBar.hidden) {
            gFindBar.onFindCommand();
            var field = gFindBar._findField;
            field.value = fastFindBar._findField.value;
            field.selectionStart = field.value.length;
        }
    }, 50);
}

Отредактировано Dumby (06-04-2013 07:56:26)

Отсутствует

 

№25606-04-2013 20:45:52

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

Re: [CB]Toggle Find+

Ader
Хорошо, исправлю и сделаю как просишь.

Добавлено 06-04-2013 20:58:56

Dumby пишет

Если я правильно понял идею, то может быть так......

Спасибо, это работает :)
Кстати отличная идея спрятать панель быстрого поиска и потом проверять !fastFindBar.hidden, и не надо проверять какая там клавиша нажата и где там фокус. Просто и красиво.

Отредактировано bunda1 (06-04-2013 20:58:56)

Отсутствует

 

№25706-04-2013 21:34:38

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

Re: [CB]Toggle Find+

Ader пишет

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

У меня вроде нормально видно текст, даже если не найдено, наверно у тебя нестандартная тема.
У тебя разве не так:
thumbnlt.jpg

Отредактировано bunda1 (06-04-2013 21:49:26)

Отсутствует

 

№25806-04-2013 22:58:30

Ader
Участник
 
Группа: Members
Зарегистрирован: 05-04-2013
Сообщений: 7
UA: Firefox 20.0

Re: [CB]Toggle Find+

У меня вот так:

В версиях 12 и 14
37fe7ab52e3d.jpg

А вот в версии 10 было так же и у тебя, вот я и подумал,что дело в кнопке.
5483ecda5b7b.jpg

P.S.
Да, тема у меня не нестандартная,щас проверю на дефолтной.

Отсутствует

 

№25906-04-2013 23:15:55

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

Re: [CB]Toggle Find+

Ader
Старые версии кнопки добавляли свой стиль для панели поиска если текст не найден а вот последние используют стиль по умолчанию от FF, а у тебя его наверно нестандартная тема перебивает.
Можешь попробовать вот такой стиль:

Выделить код

Код:

.findbar-textbox[status="notfound"] {
  -moz-appearance: none !important;
  box-shadow: 0 0 0 1em #f66 inset;
}

Отредактировано bunda1 (06-04-2013 23:16:12)

Отсутствует

 

№26006-04-2013 23:23:27

Ader
Участник
 
Группа: Members
Зарегистрирован: 05-04-2013
Сообщений: 7
UA: Firefox 20.0

Re: [CB]Toggle Find+

Насчёт цвета ты был прав - дело в теме. Уже разобрался.
А, вот по моим вопросам про копированием с клавы  "Ctrl + С" и автофокусировки курсора на поле текстового ввода, можно что-нибудь придумать?

Отсутствует

 

№26106-04-2013 23:29:49

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

Re: [CB]Toggle Find+

Ader пишет

А, вот по моим вопросам про копированием с клавы  "Ctrl + С" и автофокусировки курсора на поле текстового ввода, можно что-нибудь придумать?

http://forum.mozilla-russia.org/uploaded/Toggle Find+3 eksperiment.txt

Добавлено 06-04-2013 23:31:05
Поменяй код + рестарт.

Отредактировано bunda1 (06-04-2013 23:31:05)

Отсутствует

 

№26206-04-2013 23:45:56

Ader
Участник
 
Группа: Members
Зарегистрирован: 05-04-2013
Сообщений: 7
UA: Firefox 20.0

Re: [CB]Toggle Find+

Да, это то,что "доктор прописал" - всё отлично работает.
Большое Спасибо!!!

Отсутствует

 

№26307-04-2013 00:19:04

PEAKTOP
Участник
 
Группа: Members
Зарегистрирован: 07-10-2009
Сообщений: 116
UA: Firefox 20.0

Re: [CB]Toggle Find+

bunda1,  а если секцию кода - "// Показать количество совпадений на панели поиска, автор кода 'slimx' ......................................." заменить кодом из старой версии, это на что-нибудь повлияет?

секция старого кода

Выделить код

Код:

// Показать количество совпадений на панели поиска, автор кода 'slimx' .......................................
(function() {
    var status = document.getAnonymousElementByAttribute(gFindBar, 'anonid', 'match-case-status');
    var count = document.createElement("label");
    count.id = 'hits';
    count.hidden = true;
    status.parentNode.insertBefore(count, status); 
    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" ) {
                  this._foundMatches.value = "найдено совпадений: "+ matchesCount; 
                  if ( matchesCount == "-1")  this._foundMatches.value = "найдено >100 совпадений";                                                        
                  this._foundMatches.hidden = false;                
                  gFindBar._findField.removeAttribute("status", "notfound");
                  }
             else 
                  {
                  this._foundMatches.hidden = true;
                  this._foundMatches.value = "";                
                  gFindBar._findField.setAttribute("status", "notfound");
                  }

             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;
            }
        }
        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;
    }

    eval("gFindBar._updateCaseSensitivity=" + gFindBar._updateCaseSensitivity.toString().slice(0, -1) + "this._updateMatchesCount();}");
    eval("gFindBar._updateStatusUI=" + gFindBar._updateStatusUI.toString().slice(0, -1) + "this._updateMatchesCount();}");
})();

Отредактировано PEAKTOP (07-04-2013 14:17:16)


1. Приму из добрых рук щедрый дар - инвайт на Хабр и Лепру
2. Бессмысленно осмысливать смысл неосмысленными мыслями!
3. Прежде чем подумать - подумай!

Отсутствует

 

№26407-04-2013 00:39:06

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

Re: [CB]Toggle Find+

PEAKTOP
Нет эти куски кода одинаковые. И мне кажется ты здесь скопировал не старый код :/

Отсутствует

 

№26507-04-2013 14:19:06

PEAKTOP
Участник
 
Группа: Members
Зарегистрирован: 07-10-2009
Сообщений: 116
UA: Firefox 20.0

Re: [CB]Toggle Find+

bunda1, действительно ошибся, не из того окна редактора скопировал код. Спасибо за ответ. Буду пользоваться секцией старого кода.  Для меня более привычно, что кол-во совпадений отображается в конце панели.


1. Приму из добрых рук щедрый дар - инвайт на Хабр и Лепру
2. Бессмысленно осмысливать смысл неосмысленными мыслями!
3. Прежде чем подумать - подумай!

Отсутствует

 

№26621-05-2013 02:24:24

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

Re: [CB]Toggle Find+

bunda1
счётчик перестаёт работать на этой странице, если искать "потреб" и его производные.


mzfx

Отсутствует

 

№26721-05-2013 10:24:07

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 24.0

Re: [CB]Toggle Find+

iDev.P[b пишет

i]bunda1[/b]
счётчик перестаёт работать на этой странице, если искать "потреб" и его производные.

У меня в [nightly] всё работает.

Отсутствует

 

№26821-05-2013 19:52:09

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

Re: [CB]Toggle Find+

iDev.Pi
Да на этой странице счётчик глючит, а с Nightly работает нормально. Исправлю.

Отсутствует

 

№26921-05-2013 21:29:15

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

Re: [CB]Toggle Find+

bunda1
Давно хотел спросить, а можно как-то добавить функцию автоматического срабатывания "Показать - скрыть поиск по странице" при выделении текста,  без ручного клика по кнопке. Ну и можно пункт в меню кнопки для переключения режима, для кому как удобней.

Отредактировано villa7 (21-05-2013 21:36:07)


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

Отсутствует

 

№27028-05-2013 19:32:07

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

Re: [CB]Toggle Find+

villa7 пишет

bunda1
Давно хотел спросить, а можно как-то добавить функцию автоматического срабатывания "Показать - скрыть поиск по странице" при выделении текста,  без ручного клика по кнопке. Ну и можно пункт в меню кнопки для переключения режима, для кому как удобней.

Добавлять в кнопку такую функцию не буду потому что вряд ли это кому то еще нужно.
Но ты можешь добавить в кнопку:

Выделить код

Код:

function autoFind(e) {
   if ( e.button !== 0 ) return;

   if ( /input|password|textarea|textbox|searchbar|findbar/.test( e.target.localName.toLowerCase() ) ) return;
   
   if ( e.type == 'mousedown' ) var lastSelection = getBrowserSelection();
   
   if ( e.type == 'mouseup' ) {   
        var selection = getBrowserSelection();
        if ( selection && selection !== lastSelection && gFindBar.hidden ) gFindBar.onFindCommand();
        }
};
addEventListener("mouseup", autoFind, false, gBrowser );
addEventListener("mousedown", autoFind, false, gBrowser );

Если тебе нужна соответствующая настройка в меню кнопки я сделаю.

Отсутствует

 

№27128-05-2013 21:59:44

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

Re: [CB]Toggle Find+

bunda1
Отлично, спасибо. Насчет настройки в меню, так то вроде все устраивает, единственное когда копируешь много текста на компьютер, то наверное можно бы было отключить автопоиск, что-бы не выскакивал постоянно. Если это не затратно конечно.

Отредактировано villa7 (28-05-2013 22:02:29)


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

Отсутствует

 

№27201-06-2013 11:10:35

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

Re: [CB]Toggle Find+

villa7 пишет

bunda1
Отлично, спасибо. Насчет настройки в меню, так то вроде все устраивает, единственное когда копируешь много текста на компьютер, то наверное можно бы было отключить автопоиск, что-бы не выскакивал постоянно. Если это не затратно конечно.

Toggle Find+3 eksperiment.txt

Включить авто поиск при выделенные текста можно в настройках кнопки, кстати после редактирования кодов в этой кнопке не нужен рестарт.

Отсутствует

 

№27301-06-2013 12:12:48

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

Re: [CB]Toggle Find+

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


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

Отсутствует

 

№27401-06-2013 13:19:09

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 24.0

Re: [CB]Toggle Find+

bunda1 пишет

Toggle Find+3 eksperiment.txt

Очень удобно. Тогда логично бы сделать, чтобы выделенное слово добавлялось в строку поиска и когда Toggle Find+3 уже открыт. Но только чтобы это тоже отключалось.:)

Отсутствует

 

№27501-06-2013 13:53:51

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

Re: [CB]Toggle Find+

voqabuhe пишет

Очень удобно. Тогда логично бы сделать, чтобы выделенное слово добавлялось в строку поиска и когда Toggle Find+3 уже открыт. Но только чтобы это тоже отключалось.:)

http://forum.mozilla-russia.org/uploaded/Toggle Find+3 eksperiment 2.txt

Отсутствует

 

Board footer

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