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

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

№5119-01-2006 15:49:03

djet
Участник
 
Группа: Extensions
Откуда: 404 Not Found
Зарегистрирован: 20-11-2004
Сообщений: 2611

Re: Горячие клавиши

Мне бы для TMP нужно. Если бы у меня с ним работал этот модуль TBE, то я бы и не спрашивал тут..


Без бага и ошибки я софт Mozilla не люблю!
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Microsoft® Office Outlook® 2007 (12.0.4518.1014) MSO (12.0.4518.1014)

Отсутствует

 

№5220-01-2006 06:43:35

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

Re: Горячие клавиши

Ну тогда так...
Тремя клавишами - первые две - вперёд-назад, а третья включает отслеживание просматриваемых вкладок.
Вперёд:

Выделить код

Код:

window. kcAdvanceTab (1);

Назад:

Выделить код

Код:

window. kcAdvanceTab (-1);

И основной модуль:

Выделить код

Код:

if (window. kcTabHistoryUsed)
{
    var cont = document. getElementById ("content");
    cont. removeEventListener ("DOMAttrModified", window. kcTabSelect, true);
    cont. removeEventListener ("DOMNodeRemoved", window. kcTabRemoved, true);
    window. kcTabHistoryUsed = false;
    cont. removeAttribute ("kcTabHistory");
    alert ("off");
}
else
{
    var cont = document. getElementById ("content");
    window. kcTabSelect = function (event)
    {
        var nn = event. originalTarget. nodeName;
        var an = event. attrName;
        var nv = event. newValue;
        if ((nn == "xul:tab") || (nn == "tab"))
        {
            if ((an == "selected") && (nv == "true"))
            {
                var cont = document. getElementById ("content");
                var lp = event. originalTarget. getAttribute ("linkedpanel");
                var s = cont. getAttribute ("kcTabHistory");
                if (s. indexOf (lp) >= 0)
                {
                    var th = s. split (",");
                    while (th [th. length - 1] != lp)
                        th. unshift (th. pop ());
                    s = th. join (",");
                }
                else
                    s += ((s == "")? lp: ("," + lp));
                cont. setAttribute ("kcTabHistory", s);
            }
        }
    }
    window. kcTabRemoved = function (event)
    {
        var nn = event. originalTarget. nodeName;
        if ((nn == "xul:tab") || (nn == "tab"))
        {
            var cont = document. getElementById ("content");
            var lp = event. originalTarget. getAttribute ("linkedpanel");
            var s = cont. getAttribute ("kcTabHistory");
            if (s. indexOf (lp) >= 0)
            {
                s = s. substr (0, s. indexOf (lp)) +
                    s. substr (s. indexOf (lp) + lp. length + 1);
                cont. setAttribute ("kcTabHistory", s);
            }
        }
    }
    window. kcAdvanceTab = function (direction)
    {
        var cont = document. getElementById ("content");
        var th = cont. getAttribute ("kcTabHistory"). split (",");
        if (direction > 0)
            th. push (th. shift ());
        else
            th. unshift (th. pop ());
        cont. setAttribute ("kcTabHistory", th. join (","));
        for (var i = 0; i < cont. mTabs. length; i++)
            if (cont. mTabs. item (i). getAttribute ("linkedpanel") == th [th. length - 1])
            {
                cont. selectedTab = cont. mTabs. item (i);
                break;
            }
    }
    cont. setAttribute ("kcTabHistory", "");
    cont. addEventListener ("DOMAttrModified", window. kcTabSelect, true);
    cont. addEventListener ("DOMNodeRemoved", window. kcTabRemoved, true);
    window. kcTabHistoryUsed = true;
    alert ("on");
}

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

Отсутствует

 

№5320-01-2006 06:57:01

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

Re: Горячие клавиши

P.S. после изучения настроек tmp 0.2.5.2

djet пишет

Мне бы для TMP нужно...

А чем ctrl+tab/ctrl+shift+tab в tmp не устраивает ?


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

Отсутствует

 

№5422-01-2006 02:19:42

djet
Участник
 
Группа: Extensions
Откуда: 404 Not Found
Зарегистрирован: 20-11-2004
Сообщений: 2611

Re: Горячие клавиши

Anton
Спасибо! Вот только необходимость ручного пуска немного угнетает.. И ещё хотел осведомиться, не будет ли этот скрипт со временем потреблять кучу памяти или вызывать утечки.

А чем ctrl+tab/ctrl+shift+tab в tmp не устраивает ?

По этой комбинации у меня переключение по обычному порядку табов. Кстати, есть идея! Если TMP выставить на "историческое" переключение и перемапить на нужную комбинацию, а на Ctrl(+Shift)+Tab повесить обычное переключение, то это и будет решение с минимальными усилиями. Вот только проблема в том, что сочетание с Ctrl+Tab в KeyConfig не отображается.


Без бага и ошибки я софт Mozilla не люблю!
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Microsoft® Office Outlook® 2007 (12.0.4518.1014) MSO (12.0.4518.1014)

Отсутствует

 

№5522-01-2006 03:16:48

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

Re: Горячие клавиши

djet пишет

Anton
...необходимость ручного пуска немного угнетает...

Тут ничего не поделаешь средствами одного лишь keyconfig.

...И ещё хотел осведомиться, не будет ли этот скрипт со временем потреблять кучу памяти или вызывать утечки.

Вызывать утечки не должен, я предусмотрел удаление из истории при закрытии имеющейся там вкладки. Что касается потребляемой памяти, это зависит от количества вкладок в истории. Примерно 19 (38?) байт на вкладку.

...Если TMP выставить на "историческое" переключение и перемапить на нужную комбинацию, а на Ctrl(+Shift)+Tab повесить обычное переключение, то это и будет решение с минимальными усилиями. Вот только проблема в том, что сочетание с Ctrl+Tab в KeyConfig не отображается.

Ctrl+Tab можно назначить в keyconfig - выбираем запрещённую для изменения комбинацию (Ctrl+D, например), жмём кнопку "Add new key...", пишем код, назначаем комбинацию Ctrl+Tab. Проблема не в этом. Проблема в том, что работать она будет всё равно по-старому.

Может "закатать" скрипт в расширеньице ?


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

Отсутствует

 

№5622-01-2006 03:35:14

djet
Участник
 
Группа: Extensions
Откуда: 404 Not Found
Зарегистрирован: 20-11-2004
Сообщений: 2611

Re: Горячие клавиши

Ctrl+Tab можно назначить в keyconfig - выбираем запрещённую для изменения комбинацию (Ctrl+D, например), жмём кнопку "Add new key...", пишем код, назначаем комбинацию Ctrl+Tab. Проблема не в этом. Проблема в том, что работать она будет всё равно по-старому.

Я имел в виду, что он Ctrl+Tab вообще не "ловит". А то же "запрещённое" Ctrl+B (Закладки) я спокойно на BBCode поменял. :)

Может "закатать" скрипт в расширеньице ?

Пожалуй. Других вариантов, похоже, не осталось.


Без бага и ошибки я софт Mozilla не люблю!
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Microsoft® Office Outlook® 2007 (12.0.4518.1014) MSO (12.0.4518.1014)

Отсутствует

 

№5722-01-2006 04:17:52

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

Re: Горячие клавиши

djet пишет

...
...Других вариантов, похоже, не осталось.

Есть вообще-то. Родной код tmp.
Назад:

Выделить код

Код:

alert('');
var tabCount = window. flst.TabHistory.length;
if (!window. flst. KeyLock)
{
    window. flst. MaintainTabHistory ();
    tabCount = window. flst. TabHistory. length;
    window. flst. TabIndex = tabCount - 1;
    window. flst. KeyLock = true;
}
window. flst. TabIndex--;
if (window. flst. TabIndex < 0)
    window. flst. TabIndex = tabCount - 1;
window. flst. SelectTab (window. flst. TabIndex);

Вперёд:

Выделить код

Код:

alert('');
var tabCount = window. flst.TabHistory.length;
if (!window. flst. KeyLock)
{
    window. flst. MaintainTabHistory ();
    tabCount = window. flst. TabHistory. length;
    window. flst. TabIndex = tabCount - 1;
    window. flst. KeyLock = true;
}
window. flst. TabIndex++;
if (window. flst. TabIndex >= tabCount)
    window. flst. TabIndex = 0;
window. flst. SelectTab (window. flst. TabIndex);

Вот только если убрать алерты, перестаёт работать :(
Попробую ещё "покопать".


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

Отсутствует

 

№5822-01-2006 04:41:16

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

Re: Горячие клавиши

Вперёд:

Выделить код

Код:

window. setTimeout
(
    function ()
    {
        var tabCount = flst.TabHistory.length;
        if (!window. flst. KeyLock)
        {
            window. flst. MaintainTabHistory ();
            tabCount = window. flst. TabHistory. length;
            window. flst. TabIndex = tabCount - 1;
            window. flst. KeyLock = true;
        }
        window. flst. TabIndex++;
        if (window. flst. TabIndex >= tabCount)
            window. flst. TabIndex = 0;
        window. flst. SelectTab (window. flst. TabIndex);
    }, 250
);

работает. Заменили алерт задержкой. А в обратном направлении такой фокус не прокатывает...


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

Отсутствует

 

№5922-01-2006 05:27:03

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

Re: Горячие клавиши

Назад:

Выделить код

Код:

window. setTimeout
(
    function ()
    {
        var tabCount = flst.TabHistory.length;
        window. flst. TabIndex--;
        if (window. flst. TabIndex < 0)
            window. flst. TabIndex = tabCount - 1;
        window. flst. SelectTab (window. flst. TabIndex);
    }, 250
);

Можно сказать, работает.


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

Отсутствует

 

№6022-01-2006 06:13:52

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

Re: Горячие клавиши

Расширение: http://forum.mozilla.ru/uploaded/tabvie … lector.xpi.
Переделанный скрипт http://forum.mozilla.ru/viewtopic.php?pid=76627#p76627. Реализует windows. kcAdvanceTab (+1/-1)
С новой версией tmp (0.3) "буксует" в крайних положениях истории.


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

Отсутствует

 

№6122-01-2006 15:57:52

djet
Участник
 
Группа: Extensions
Откуда: 404 Not Found
Зарегистрирован: 20-11-2004
Сообщений: 2611

Re: Горячие клавиши

Спасибо, то, что нужно! :)


Без бага и ошибки я софт Mozilla не люблю!
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Microsoft® Office Outlook® 2007 (12.0.4518.1014) MSO (12.0.4518.1014)

Отсутствует

 

№6228-01-2006 02:10:50

Ice_sCream
Участник
 
Группа: Members
Зарегистрирован: 20-12-2005
Сообщений: 10

Re: Горячие клавиши

Спасибо за ответы. Особенно Dimanish'у.

Отсутствует

 

№6328-01-2006 11:29:22

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

Re: Горячие клавиши

Ice_sCream пишет

Спасибо за ответы. Особенно Dimanish'у.

Эге, Ice_sCream остался без ответа ?

Закрыть все вкладки, кроме текущей

Выделить код

Код:

var c = document. getElementById ("content");
c. removeAllTabsBut (c. mCurrentTab);

Сойдёт ?


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

Отсутствует

 

№6428-01-2006 12:49:21

Dimanish
Участник
 
Группа: Extensions
Зарегистрирован: 31-03-2005
Сообщений: 2371

Re: Горячие клавиши

Ice_sCream
Как я написал на первой странице сего топика:

Выделить код

Код:

Закрыть другие вкладки:
gBrowser.removeAllTabsBut(gBrowser.mCurrentTab);

Что тоже самое, что

Закрыть все вкладки, кроме текущей


Тут должна была быть подпись. А, да... Вот она и есть.

Отсутствует

 

№6501-02-2006 08:12:45

e-travel
Участник
 
Группа: Extensions
Откуда: г.Киев
Зарегистрирован: 06-06-2005
Сообщений: 390
Веб-сайт

Re: Горячие клавиши

Возможно ли на команду расширения WikiCode (аналог BBcode для Wiki) назначить горячую клавишу, чтобы она работала только в поле ввода текста wiki? Нужно по Ctrl+b выделять текст жирным, чтобы не возникал конфликт с командой открытия закладок по этой клавише. Вообще возможно ли указывать в каком месте должно работать сочетание клавиш, скажем только в поле ввода текста? Код для разметки текста жирным с помощью WikiCode: wikicode.notagcode('**','**');


Fx 2.0.0.8

Отсутствует

 

№6601-02-2006 08:33:55

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

Re: Горячие клавиши

e-travel, можно. Посмотри сюда: http://forum.mozilla.ru/viewtopic.php?pid=70620#p70620 (определение контекста выполнения).
Что-то вроде

Выделить код

Код:

if (event. target. id == "...")
    wikicode. notagcode ('**', '**');
else
    toggleSidebar ('viewBookmarksSidebar');

У меня нет прав на писание Wiki, поэтому id я указать не могу.


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

Отсутствует

 

№6701-02-2006 23:01:56

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771

Re: Горячие клавиши

Anton

У меня нет прав на писание Wiki, поэтому id я указать не могу.

Теперь есть.


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№6801-02-2006 23:23:02

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

Re: Горячие клавиши

Unghost пишет

Anton

У меня нет прав на писание Wiki, поэтому id я указать не могу.

Теперь есть.

:oops:
Дико извиняюсь, но, оказывается, я мог узнать id поля без всяких прав и не утруждая администратора:

Выделить код

Код:

if (event. target. id == "wiketext")
    wikicode. notagcode ('**', '**');
else
    toggleSidebar ('viewBookmarksSidebar');

Лень было сходить на Wiki и посмотреть - думал, поле ввода может появиться только у тех, кто имеет права.


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

Отсутствует

 

№6901-02-2006 23:32:25

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771

Re: Горячие клавиши

Anton

Дико извиняюсь, но, оказывается, я мог узнать id поля без всяких прав и не утруждая администратора:

Я переживу потерю пяти секунд времени :-)
Я вообще-то думал у тебя давно права есть.


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№7002-02-2006 08:16:29

e-travel
Участник
 
Группа: Extensions
Откуда: г.Киев
Зарегистрирован: 06-06-2005
Сообщений: 390
Веб-сайт

Re: Горячие клавиши

Anton
спасибо, только не: id =="wiketext" а "wikitext" :). Посмотрел в DOM Inspector, если написать:

Выделить код

Код:

if (event. target. nodeName ==  "TEXTAREA")

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

=====Добавлено=====
Поменял название статьи в wiki на просто: Настройка горячих клавиш.
Изменил вид самой статьи. Со временем нужно туда обязательно добавить всё то огромное количество советов и подсказок, которыми делился Anton

Отредактировано e-travel (02-02-2006 09:46:26)


Fx 2.0.0.8

Отсутствует

 

№7104-02-2006 11:30:01

e-travel
Участник
 
Группа: Extensions
Откуда: г.Киев
Зарегистрирован: 06-06-2005
Сообщений: 390
Веб-сайт

Re: Горячие клавиши

Anton
хотелось бы не писать для каждого конфликтного сочетания клавиш такое:

Выделить код

Код:

else
    toggleSidebar ('viewBookmarksSidebar');

все равно это будет работать только после отключения комманды которая исспользует такое же сочетание клавиш, в данном случае это команда Bookmarks (открыть меню закладок). Может можно прописать чтото вроде:

Выделить код

Код:

only if (event. target. id == "wiketext")
    wikicode. notagcode ('**', '**');

Fx 2.0.0.8

Отсутствует

 

№7204-02-2006 11:46:50

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

Re: Горячие клавиши

Можно, но это потребует гораздо больше кода.


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

Отсутствует

 

№7304-02-2006 11:59:13

e-travel
Участник
 
Группа: Extensions
Откуда: г.Киев
Зарегистрирован: 06-06-2005
Сообщений: 390
Веб-сайт

Re: Горячие клавиши

Anton
если в keyconfig можно ссылаться на другие комманды, тогда никаких проблем, нужно было б только написать:

Выделить код

Код:

else
Bookmarks

и keyconfig нашел бы в своей базе комманду с таким именем и выполнил ее. Я не знаю умеет ли он это.


Fx 2.0.0.8

Отсутствует

 

№7404-02-2006 12:07:31

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

Re: Горячие клавиши

У keyconfig нет никакой базы команд. Расширение отслеживает события клавиатуры и выполняет определенный для заданного сочетания клавиш код javascript.


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

Отсутствует

 

№7504-02-2006 13:12:05

e-travel
Участник
 
Группа: Extensions
Откуда: г.Киев
Зарегистрирован: 06-06-2005
Сообщений: 390
Веб-сайт

Re: Горячие клавиши

Anton
подскажи пожалуйста, как на сочетание Ctrl+цифра повесить свою команду? Сейчас хоть keyconfig и не ругается когда указываешь это сочетание, но оно не работает, по прежнему происходит переход на 1..9 вкладку в зависимости от нажатой цифры.

=====Добавлено=====
пытался только что дописать статью по настройке горячих клавиш, вижу: "Заблокировано Anton", значит ты тоже подключился к написанию этого материала :). Поздравляю с началом работы в Wiki, хорошо что такой знающий человек сможет писать свои мануалы.

Отредактировано e-travel (04-02-2006 13:41:48)


Fx 2.0.0.8

Отсутствует

 

Board footer

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