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

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

№60110-07-2015 10:52:24

lokiju
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 208
UA: Firefox 42.0

Re: [CB]Toggle Find+

villa7,
и счетчик нормально считает? У меня так к примеру: на этой странице выделил " зн  ". На панели мини значение счетчика 3/4(первое-номер позиции выделенного, второе - всего найденных на странице). Теперь жму "искать следующее" или "искать предыдущее" переход происходит, номер позиции выделенного не меняется.

Отсутствует

 

№60210-07-2015 11:07:43

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

Re: [CB]Toggle Find+

lokiju
Счётчик тоже не меняется, есть ещё кое какие глюки, но уже не до хорошего. Всё равно более удобного не нашёл для себя.


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

Отсутствует

 

№60310-07-2015 14:46:08

lokiju
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 208
UA: Firefox 42.0

Re: [CB]Toggle Find+

villa7, значит это не мой персональный глюк, а общий косяк. Ждём ответа bunda1.

Отсутствует

 

№60410-07-2015 16:08:10

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

Re: [CB]Toggle Find+

villa7, lokiju
У меня счётчик полностью работоспособный.

Отсутствует

 

№60510-07-2015 16:20:46

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

Re: [CB]Toggle Find+

voqabuhe
А код можно? Все функции работают без глюков?


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

Отсутствует

 

№60610-07-2015 17:16:44

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

Re: [CB]Toggle Find+

voqabuhe пишет

У меня счётчик полностью работоспособный.

Аналогично, счетчик работает, но bunda1 специльно для меня переделывал его как-то давно:

Выделить код

Код:

const forceFind = false, forceFindCS = true;

// Приклеить элемент findbar к странице( #appcontent ) ................................
const fbID = "FindToolbar-m";
delete window.gFindBar;
window.gFindBar = document.getElementById(fbID);
if (!gFindBar) {
    gFindBar = gBrowser.parentNode.insertBefore(document.createElement("findbar"), gBrowser);
    gFindBar.id = fbID;
    gFindBar.setAttribute("browserid", "content");
    gFindBar.clientTop;
    delete window.gFindBarInitialized;
    window.gFindBarInitialized = true;
    gFindBar._selectionMaxLen = 1000;    // лимит символов для поиска
}


// Ctrl+F, показать - скрыть панель поиска ....................................
function toggleFindbar() gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
addEventListener("keydown", function(e)
    e.keyCode == e.DOM_VK_F && e.ctrlKey && !e.altKey && !e.shiftKey
    && !e.preventDefault() && toggleFindbar()
, false);
this.onclick = function(e) { if (!e.button) toggleFindbar() };


// Показать количество совпадений на панели поиска ................................
const textbox = gFindBar.getElement("findbar-textbox"),
nrm = Ci.nsISelectionController.SELECTION_NORMAL, labID = "hits-m";
var lab = document.getElementById(labID);
if (!lab) {
    lab = textbox.parentNode.insertBefore(document.createElement("label"), textbox);
    lab.id = labID;
}
var curHit, allHits;

function updateHits(arg) {
    if (gFindBar.hidden) return;
    var word = textbox.value;
    if (!word) {
        lab.value = "0/0";
        textbox.removeAttribute("status");
        return;
    }
    var win = arg instanceof Window && arg || content;
    if (win == content) curHit = allHits = 0;
    var findbarFinder = gFindBar._browser.finder;
    var controller = findbarFinder._getSelectionController(win);
    var doc = win.document;

    if (word && controller && doc && doc.documentElement) {
        var body = doc instanceof HTMLDocument && doc.body ? doc.body : doc.documentElement;

        var searchRange = doc.createRange();
        searchRange.selectNodeContents(body);
        var startPt = searchRange.cloneRange();
        startPt.collapse(true);
        var endPt = searchRange.cloneRange();
        endPt.collapse(false);

        var retRange = null;
        var finder = Cc["@mozilla.org/embedcomp/rangefind;1"].createInstance().QueryInterface(Ci.nsIFind);
        finder.caseSensitive = gFindBar._shouldBeCaseSensitive(word);

        while ((retRange = finder.Find(word, searchRange, startPt, endPt))) {
            allHits++;
            if (!curHit) {
                var sel = controller.getSelection(nrm), range;
                if (sel.toString()) range = sel.getRangeAt(0);
                else {
                    var editableNode = findbarFinder._getEditableNode(retRange.startContainer);
                    if (editableNode) sel = editableNode.editor.selectionController.getSelection(nrm);
                    if (sel.toString()) range = sel.getRangeAt(0);
                }
                var comp = range && ["startContainer", "endContainer", "startOffset", "endOffset"]
                    .every(function(prop) range[prop] == retRange[prop]);
                if (comp) curHit = allHits;
            }
            startPt = retRange.cloneRange();
            startPt.collapse(false);
        }
        Array.forEach(win.frames, function(frame) updateHits(frame));
    }
    if (win != content) return;
    allHits ? textbox.removeAttribute("status") : textbox.setAttribute("status", "notfound");
    forceFind && !curHit && allHits && gFindBar._find();
    lab.value = curHit + "/" + allHits;
}
updateHits();


gFindBar.updateHits = updateHits;
function insUpd(methodName, code) {
    const method = gFindBar[methodName];
    gFindBar[methodName] = Function("arguments.callee.method.apply(this, arguments);" + (code || "") + " this.updateHits();");
    gFindBar[methodName].method = method;
    addDestructor(function() gFindBar[methodName] = method);
}
insUpd("_find"); insUpd("_findAgain");
insUpd("_setCaseSensitivity", forceFindCS && " this._find();");


const progressListener = {
    onStateChange: function(wpr, req, state)
        state & Ci.nsIWebProgressListener.STATE_STOP && setTimeout(updateHits, 320),
    onLocationChange: function(wpr, req) !req && updateHits()
};
addDestructor(function() gBrowser.removeProgressListener(progressListener));


function onFindbar() {
    gBrowser[(gFindBar.hidden ? "remove" : "add") + "ProgressListener"](progressListener);
    !gFindBar.hidden && updateHits();
}
onFindbar();
const observer = MutationObserver(onFindbar);
observer.observe(gFindBar, { attributes: true, attributesFilter: ["hidden"] });
addDestructor(function() observer.disconnect());

Отсутствует

 

№60710-07-2015 21:07:40

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

Re: [CB]Toggle Find+

Kamui
У вас на 39 [firefox] всё работает нормально? Может весь код дадите.


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

Отсутствует

 

№60810-07-2015 21:53:50

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

Re: [CB]Toggle Find+

villa7 пишет

А код можно? Все функции работают без глюков?

Про все функции не скажу,  давно не проверял, но тем что пользуюсь, всё работает.
Toggle Find.txt
ПС Только я в коде под себя стиль правил, точно не помню уже что. :)

Отсутствует

 

№60910-07-2015 22:40:05

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

Re: [CB]Toggle Find+

voqabuhe
Счетчик работает, выделение нет.


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

Отсутствует

 

№61010-07-2015 22:51:06

lokiju
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 208
UA: Firefox 42.0

Re: [CB]Toggle Find+

villa7 пишет

voqabuheСчетчик работает, выделение нет.

Тоже самое. Выделенное после нажатия Find - Найти на странице не копируется в финдбар-текстбокс

Отсутствует

 

№61111-07-2015 00:36:04

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

Re: [CB]Toggle Find+

villa7
Странно, у меня выделяет.  А в меню кнопки Автовыделение включено?

Добавлено 11-07-2015 00:40:33

lokiju пишет

Выделенное после нажатия Find - Найти на странице не копируется в финдбар-текстбокс

И эта функция у меня работает. Ребята похоже у вас какие-то проблемы. Тогда ждите bunda1, он вам скажет чё и как.:)

Отредактировано voqabuhe (11-07-2015 00:41:38)

Отсутствует

 

№61211-07-2015 11:59:52

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

Re: [CB]Toggle Find+

villa7, lokiju
Да есть глюк с счётчиком эсли нажимать на кнопку поиск на мини панели
f558e9ff3c35c029e21d4ed1dba836d4.jpg
вот исправил: Toggle Find для FF28+

Добавлено 11-07-2015 12:01:53
Пишите про другие глюки :)

Отредактировано bunda1 (11-07-2015 12:01:53)

Отсутствует

 

№61311-07-2015 12:15:59

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

Re: [CB]Toggle Find+

bunda1 пишет

Да есть глюк с счётчиком эсли нажимать на кнопку поиск на мини панели

А вот оно чё, а я всегда колесом кручу, а кнопкой только строку очищаю. Поэтому  у меня всё ОК.:)

Отсутствует

 

№61411-07-2015 12:23:27

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

Re: [CB]Toggle Find+

voqabuhe пишет

А вот оно чё, а я всегда колесом кручу, а кнопкой только строку очищаю. Поэтому  у меня всё ОК.:)

Я тоже не сразу понял потому что только колесом ищу.

Отсутствует

 

№61511-07-2015 13:59:00

lokiju
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 208
UA: Firefox 42.0

Re: [CB]Toggle Find+

bunda1
Спасибо, счётчик работает. Раньше(других версиях , не Toggle Find для FF28+) после нажатия Find - Найти на странице подсвечивались все найденные позиции на странице. Сейчас только текущая позиция отмечается зелёным.

Добавлено 11-07-2015 14:04:16
И ещё при переходе на последнюю позицию(в конце страницы) текстовое поле мигало жёлтым , сейчас мигает жёлтым при переходе с последней позиции на первую(в начале страницы)

Отредактировано lokiju (11-07-2015 14:04:16)

Отсутствует

 

№61611-07-2015 14:17:00

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

Re: [CB]Toggle Find+

lokiju пишет

bunda1
Спасибо, счётчик работает. Раньше(других версиях , не Toggle Find для FF28+) после нажатия Find - Найти на странице подсвечивались все найденные позиции на странице. Сейчас только текущая позиция отмечается зелёным.

Не понял о чём речь :/, может включи Автовыделение.

Отсутствует

 

№61711-07-2015 14:44:02

lokiju
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 208
UA: Firefox 42.0

Re: [CB]Toggle Find+

bunda1 автовыделение включено, но похоже оно не срабатывает.

Отсутствует

 

№61811-07-2015 14:58:34

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

Re: [CB]Toggle Find+

lokiju пишет

bunda1 автовыделение включено, но похоже оно не срабатывает.

Странно, мне на FF42 это работает, если текущая позиция отмечается зелёным то должно и подсвечиваться все найденные позиции на странице, потому что это запускает одна функция. Может какое расширение или кнопка конфликтует.

Отсутствует

 

№61911-07-2015 15:01:10

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

Re: [CB]Toggle Find+

lokiju пишет

У меня так к примеру: на этой странице выделил " зн  ".

lokiju пишет

автовыделение включено, но похоже оно не срабатывает.

А ты учитываешь, что оно срабатывает начиная с трёх букв?

Отсутствует

 

№62011-07-2015 18:36:18

lokiju
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 208
UA: Firefox 42.0

Re: [CB]Toggle Find+

bunda1 пишет

Странно, мне на FF42 это работает, если текущая позиция отмечается зелёным то должно и подсвечиваться все найденные позиции на странице, потому что это запускает одна функция. Может какое расширение или кнопка конфликтует.

Выделение вручную работает по нажатию Find - Выделить текст на странице . Подождём , что напишет villa7. Потому что конфликтовать вроде как не с чем(нет ничего связаного с выделением, подсветкой и копированием)

Отсутствует

 

№62112-07-2015 07:07:44

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

Re: [CB]Toggle Find+

bunda1
Не выделяет весь абзац.
fdecde1a47968eda6aefa8be700907a6.jpeg

Даже не знаю исправимо сие или нет, но после обновления кода стало конфликтовать с этим
https://github.com/ardiman/userChrome.j … ontextmenu
и этим
https://forum.mozilla-russia.org/viewto … 28#p629428
Когда они оба включены, поиск осуществляется только после второго раза. Если отключить любое из них, то всё нормально. До этого всё работало с первого раза.
27b767e304255d2c606520f97e2a0572.jpeg

Отредактировано villa7 (12-07-2015 09:16:14)


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

Отсутствует

 

№62220-07-2015 21:36:02

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

Re: [CB]Toggle Find+

villa7 пишет

bunda1
Не выделяет весь абзац.

Toggle Find для FF28+

Отсутствует

 

№62320-07-2015 22:28:24

lokiju
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 208
UA: Firefox 42.0

Re: [CB]Toggle Find+

bunda1 пишет

villa7 пишет: bunda1Не выделяет весь абзац.Toggle Find для FF28+

Подсветка найденных позиций заработала. bunda1, спасибо . У меня работает всё, чем пользуюсь. Такой вопрос : хочу уменьшить размер иконки кнопки, не получается. Что неправильно?

Выделить код

Код:

this.Attribute("style","menupopup>.toolbarbutton-icon{ -moz-appearance: none !important; margin: 0 !important; padding: 2px !important;width: 16px !important;height: 20px !important;")

Отсутствует

 

№62421-07-2015 07:12:44

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

Re: [CB]Toggle Find+

lokiju
не this.Attribute а this.setAttribute и нужно без menupopup>.toolbarbutton-icon{   }. Лучше свой css код плюс \ положи в кнопке под:

Выделить код

Код:

// Стиль для панели поиска ................................
var uri = makeURI('data:text/css,'+ encodeURIComponent('\

Отредактировано bunda1 (21-07-2015 07:14:38)

Отсутствует

 

№62526-08-2015 21:28:12

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

Re: [CB]Toggle Find+

bunda1
Обрубыш который ты для меня делал, потерял функционал стандартный:

Выделить код

Код:

const forceFind = false, forceFindCS = true;

// Приклеить элемент findbar к странице( #appcontent ) ................................
const fbID = "FindToolbar-m";
delete window.gFindBar;
window.gFindBar = document.getElementById(fbID);
if (!gFindBar) {
    gFindBar = gBrowser.parentNode.insertBefore(document.createElement("findbar"), gBrowser);
    gFindBar.id = fbID;
    gFindBar.setAttribute("browserid", "content");
    gFindBar.clientTop;
    delete window.gFindBarInitialized;
    window.gFindBarInitialized = true;
    gFindBar._selectionMaxLen = 1000;    // лимит символов для поиска
}


// Ctrl+F, показать - скрыть панель поиска ....................................
function toggleFindbar() gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
addEventListener("keydown", function(e)
    e.keyCode == e.DOM_VK_F && e.ctrlKey && !e.altKey && !e.shiftKey
    && !e.preventDefault() && toggleFindbar()
, false);
this.onclick = function(e) { if (!e.button) toggleFindbar() };



// Показать количество совпадений на панели поиска ................................
const textbox = gFindBar.getElement("findbar-textbox"),
nrm = Ci.nsISelectionController.SELECTION_NORMAL, labID = "hits-m";
var lab = document.getElementById(labID);
if (!lab) {
    lab = textbox.parentNode.insertBefore(document.createElement("label"), textbox);
    lab.id = labID;
}
var curHit, allHits;

function updateHits(arg) {
    if (gFindBar.hidden) return;
    var word = textbox.value;
    if (!word) {
        lab.value = "0/0";
        textbox.removeAttribute("status");
        return;
    }
    var win = arg instanceof Window && arg || content;
    if (win == content) curHit = allHits = 0;
    var findbarFinder = gFindBar._browser.finder;
    var controller = findbarFinder._getSelectionController(win);
    var doc = win.document;

    if (word && controller && doc && doc.documentElement) {
        var body = doc instanceof HTMLDocument && doc.body ? doc.body : doc.documentElement;

        var searchRange = doc.createRange();
        searchRange.selectNodeContents(body);
        var startPt = searchRange.cloneRange();
        startPt.collapse(true);
        var endPt = searchRange.cloneRange();
        endPt.collapse(false);

        var retRange = null;
        var finder = Cc["@mozilla.org/embedcomp/rangefind;1"].createInstance().QueryInterface(Ci.nsIFind);
        finder.caseSensitive = gFindBar._shouldBeCaseSensitive(word);

        while ((retRange = finder.Find(word, searchRange, startPt, endPt))) {
            allHits++;
            if (!curHit) {
                var sel = controller.getSelection(nrm), range;
                if (sel.toString()) range = sel.getRangeAt(0);
                else {
                    var editableNode = findbarFinder._getEditableNode(retRange.startContainer);
                    if (editableNode) sel = editableNode.editor.selectionController.getSelection(nrm);
                    if (sel.toString()) range = sel.getRangeAt(0);
                }
                var comp = range && ["startContainer", "endContainer", "startOffset", "endOffset"]
                    .every(function(prop) range[prop] == retRange[prop]);
                if (comp) curHit = allHits;
            }
            startPt = retRange.cloneRange();
            startPt.collapse(false);
        }
        Array.forEach(win.frames, function(frame) updateHits(frame));
    }
    if (win != content) return;
    allHits ? textbox.removeAttribute("status") : textbox.setAttribute("status", "notfound");
    forceFind && !curHit && allHits && gFindBar._find();
    lab.value = curHit + "/" + allHits;
}
updateHits();


gFindBar.updateHits = updateHits;
function insUpd(methodName, code) {
    const method = gFindBar[methodName];
    gFindBar[methodName] = Function("arguments.callee.method.apply(this, arguments);" + (code || "") + " this.updateHits();");
    gFindBar[methodName].method = method;
    addDestructor(function() gFindBar[methodName] = method);
}
insUpd("_find"); insUpd("_findAgain");
insUpd("_setCaseSensitivity", forceFindCS && " this._find();");


const progressListener = {
    onStateChange: function(wpr, req, state)
        state & Ci.nsIWebProgressListener.STATE_STOP && setTimeout(updateHits, 320),
    onLocationChange: function(wpr, req) !req && updateHits()
};
addDestructor(function() gBrowser.removeProgressListener(progressListener));


function onFindbar() {
    gBrowser[(gFindBar.hidden ? "remove" : "add") + "ProgressListener"](progressListener);
    !gFindBar.hidden && updateHits();
}
onFindbar();
const observer = MutationObserver(onFindbar);
observer.observe(gFindBar, { attributes: true, attributesFilter: ["hidden"] });
addDestructor(function() observer.disconnect());

1. Если слово на странице выделено и я нажимаю ctrl+f, то выделенное слово не ищется, а должно.
2. Если ничего не выделено на странице, то при нажатии ctrl+f, открывается панель с предыдущим поиском, но слово в панели не выделено, а должно быть, чтобы сразу можно было печатать новое слово.

Я не заметил когда все это пропало, начало надоедать недавно, можно с этим что-то сделать?

Отсутствует

 

Board footer

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