Скачал и распечатал список горячих клавиш с офиц. сайта. Но так и не понял что нажимать, чтобы "Закрыть все, кроме активной".
И еще - как сделать, чтобы эта кнопка была на панеле инструментов? Плагин может какой-то посоветуте.
Спасибо.

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

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

Ice_sCream
по умолчанию, похоже нет сочетания. что-то я не в таблице не вижу, не в менюшках. не думаю, что это большой секрет (разработчики скрывают эту фишку) :) поэтому без расширений нельзя.

странно. но спасибо, Red -)

Ice_sCream
Почитай здесь, может найдешь.

Все, я вроде разобрался с установкой горячих клавиш в FF и TB.
Путь к успеху таков: смотря что настраиваем FF или TB, ставим расширения:
MenuManipulator для FF и/или MenuManipulator для TB.
Затем расширение keyconfig.
Установив расширения запускаем браузер/почтовик.
Заходим в Инструменты->Расширения->MenuManipulator.
В MenuManipulator напротив настраиваемой команды смотрим значение command или oncommand.
Копируем его (Edit->Ctrl-C).
Запускам keyconfig и создаем новое сочетание для нужной команды: Add a new key.
В поле Name пишем любое имя для будущей команды (например "Обновить все вкладки").
В поле /* CODE */ пишем значение того самого command или oncommand, которые мы смотрели при помощи  ->MenuManipulator (например "gBrowser.reloadAllTabs();")
Вот, собственно и все. Перезапускаем браузер/почтовик.

Dimanish
фантастика, прямо хоть в Wiki добавляй. думаю, тебе многие скажут спасибо.

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

квотинга

выделения текста жирным и т.д.

только что попробовал - здорово. надо бы исследовать получше.

keyconfig не работает на русской раскладке?

Русские сочетаня клавиш работают как и английские, если код правильный.
Но есть несколько вопросов:
1. Почему то нельзя назначать комбинации вида ctrl+shift+русская буква.
2. Мне так и не удалось назначить хоткеи на некоторые действия, например "Закрыть другие вкладки" (стоит TabMixPlus).
Возможно keyconfig не умеет обрабатывать выражения вида:
var tabbrowser = this.parentNode.parentNode.parentNode.parentNode;                                      tabbrowser.removeAllTabsBut(tabbrowser.mContextTab);

Dimanish пишет

Все, я вроде разобрался с установкой горячих клавиш в FF и TB.
Путь к успеху таков: смотря что настраиваем FF или TB, ставим расширения:
MenuManipulator для FF и/или MenuManipulator для TB.
Затем расширение keyconfig.
Установив расширения запускаем браузер/почтовик.
Заходим в Инструменты->Расширения->MenuManipulator.
В MenuManipulator напротив настраиваемой команды смотрим значение command или oncommand.
Копируем его (Edit->Ctrl-C).
Запускам keyconfig и создаем новое сочетание для нужной команды: Add a new key.
В поле Name пишем любое имя для будущей команды (например "Обновить все вкладки").
В поле /* CODE */ пишем значение того самого command или oncommand, которые мы смотрели при помощи  ->MenuManipulator (например "gBrowser.reloadAllTabs();")
Вот, собственно и все. Перезапускаем браузер/почтовик.

У всех эта методика работает? У меня как-то не очень, точнее даже совсем не работает :(

Dimanish, откуда вы взяли для функции Обновить все вкладки значение oncommand:

Выделить код

Код:

gBrowser.reloadAllTabs();

???
Я по вашей методике для этой же функции вытащил следующее:

Выделить код

Код:

var tabbrowser = this.parentNode.parentNode.parentNode.parentNode;                                      tabbrowser.reloadAllTabs(tabbrowser.mContextTab);

!!!
С вашим значением работает, с моим НЕТ!

Захотел реализовать функции вызова окна Расширения (command=Tools:Extensions) и вызова окна Информация о странице (command=View:PageInfo) и ничего из этого не заработало! Что я делаю не так?!

P.S. Чистый профиль Fx 1.5 + Nightly Tester Tools + MenuManipulator + keyconfig.

Да, методика прокатывает далеко не для всех команд, почему не знаю.
"Правильные" команды ищу непосредственно на форумах типа forums.mozillazine.org, а также создателей расширений.
Вот какие команды назначил я, может кому пригодиться:

Выделить код

Код:

BBCodeExtra
1. Буфер обмена - ссылка с именем:
bbcodextra.bbcodextra('urlclip',null);

2. Буфер обмена - цитата:
bbcodextra.bbcodextra('quoteclip',null);

3. Буфер обмена - изображение:
bbcodextra.bbcodextra('imgclip',null);

4. Жирный:
bbcodextra.bbcodextra('bold',null);

5. Подчёркнутый:
bbcodextra.bbcodextra('underline',null);

6. Цитата:
bbcodextra.bbcodextra('quote',null);

7. Изображение:
bbcodextra.bbcodextra('img',null);

8. Cсылка:
bbcodextra.bbcodextra('urltag',null);

BBCode (temporarily off)
1. Буфер обмена - ссылка с названием:
bbcode.bbcode('urlclip', 'bbcode');

2. Буфер обмена - цитата:
bbcode.bbcode('quoteclip', 'bbcode');

3. Буфер обмена - картинка:
bbcode.bbcode('img', 'bbcode');

4. Буфер обмена - ссылка:
bbcode.bbcode('url', 'bbcode');

5. Жирный:
bbcode.bbcode('bold', 'bbcode');

6. Курсив:
bbcode.bbcode('italic', 'bbcode');

7. Подчеркнутый:
bbcode.bbcode('underline', 'bbcode');

8. Цитата:
bbcode.bbcode('quote', 'bbcode');



Работа с вкладками:
1. Следующая вкладка:
gBrowser.mTabContainer.advanceSelectedTab(1);

2.Предыдущая вкладка:
gBrowser.mTabContainer.advanceSelectedTab(-1);

3. Обновить все вкладки:
gBrowser.reloadAllTabs();

4. Закрыть вкладку и перейти на левую от нее:
var tab = gBrowser.mCurrentTab; if(tab.previousSibling) gBrowser.mTabContainer.selectedIndex--; gBrowser.removeTab(tab);

5. Закрыть вкладку и перейти на правую от нее:
var tab = gBrowser.mCurrentTab; if(tab.nextSibling) gBrowser.mTabContainer.selectedIndex++; gBrowser.removeTab(tab);

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

7. Быстрый переход: следующая вкладка - предыдущая вкладка (tabflip):
gBrowser.previousTab(gBrowser.mCurrentTab);

8. Дублировать вкладку:
gBrowser.duplicateTab(gBrowser.mCurrentTab);

9. Дублировать вкладку в новом окне:
gBrowser.duplicateInWindow(gBrowser.mCurrentTab);

Остальное:
1.Упорядочить закладки: 
toOpenWindowByType('bookmarks:manager', 'chrome://browser/content/bookmarks/bookmarksManager.xul');

2. Работать автономно/в сети:
BrowserOffline.toggleOfflineStatus();

3. Выход:
goQuitApplication();

Dimanish
надеюсь ты не обидишься из-за того, что я перенёс твои советы в Wiki, в Firefox » Полезные советы :) . Статью назвал Тотальная настройка горячих клавиш. Она ещё в очень сыром (не отформатированном) виде, но надеюсь igorsub поможет с форматированием. Было бы очень здорово, если-бы ты дополнил эту статью как автор материала, и внёс свои коррективы.

stEp пишет

...
Захотел реализовать функции вызова окна Расширения (command=Tools:Extensions) и вызова окна Информация о странице (command=View:PageInfo) и ничего из этого не заработало! Что я делаю не так?!
...

Эти команды обрабатываются по-другому. Нужно найти с помощью DOM Inspector элемент с идентификатором "Tools:Extensions" (это будет <command id="Tools:Extensions" oncommand="BrowserOpenExtensions('extensions');"/>) и брать значение атрибута oncommand.

Ещё для Wiki-писателей:

Выполнение некоторых команд:

Выделить код

Код:

goDoCommand ("cmd_paste"); /* вставка */
goDoCommand ("cmd_cut"); /* вырезать */
goDoCommand ("cmd_copy"); /* копировать */
goDoCommand ("cmd_delete"); /* удалить */
goDoCommand ("cmd_undo"); /* отменить */
goDoCommand ("cmd_redo"); /* выполнить отменённое действие */
goDoCommand ("cmd_selectAll"); /* выделить всё */
goDoCommand ("cmd_switchTextDirection"); /* изменить направление текста */

Другие команды можно посмотреть в файле platformHTMLBindings.xml (chrome/toolkit.jar/content/global/platformHTMLBindings.xml)

Пример реализации цикличной последовательности команд:

Выделить код

Код:

/* можно определять функции (правда, локальные)
function al(x)
{
    alert(x);
}

/* определяем переменную для переключателя цикла */
if (window. my_cycler == undefined)
    window. my_cycler = 1;

/* выбор действий */
switch (window. my_cycler)
{
    case 1:
        al (100);
        break;
    case 2:
        al (200);
        break;
    case 3:
        al (300);
        break;
}

/* цикличный перебор значений */
if (++window. my_cycler > 3)
    window. my_cycler = 1;

Определение контекста выполнения:

Выделить код

Код:

...
if (event. target. nodeName == "textbox")
{
    ... // многие текстовые поля НЕ в HTML (в HTML - input, textarea)
}
...
if (event. target. id == "urlbar")
{
    ... // строка адреса
}
...

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

Bananas пишет

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

Выделить код

Код:

var ilosb = document. getElementById ("ilo-statusbarpanel");
var ilomis = ilosb. getElementsByTagName ("menuitem");
ilomis [1]. click ();

спасибо, работает!))

Anton пишет

Эти команды обрабатываются по-другому. Нужно найти с помощью DOM Inspector элемент с идентификатором "Tools:Extensions" (это будет <command id="Tools:Extensions" oncommand="BrowserOpenExtensions('extensions');"/>) и брать значение атрибута oncommand.

А вот беда то где, а я не поставил DOM Inspector при установки Fx. Как бы его установить не переустанавливая сам браузер?
А вообще хотелось бы какой-нибудь универсальный метод по изменению/заданию горячих клавиш! Как определять для какой функции какие параметры какой команды нужно искать?

stEp пишет

...
А вот беда то где, а я не поставил DOM Inspector при установки Fx. Как бы его установить не переустанавливая сам браузер?...
...

А что случится, если переустановить браузер ? Да ничего не случится. Ровным счётом ничего страшного.

...
А вообще хотелось бы какой-нибудь универсальный метод по изменению/заданию горячих клавиш!...

keyconfig ? :)

Понятно, о чём речь, этих методов пока два - изучение исходников на js и вопросы на форум. Может, в Wiki базу кто-нибудь составит со временем.

Anton

А что случится, если переустановить браузер ? Да ничего не случится. Ровным счётом ничего страшного.

Нет ну я серьёзно, что никак нельзя без переустановки, это же вроде как расширение! Только где вот его взять?

keyconfig ? :)

Как-будто есть другие варианты для простых смертных ;)

Понятно, о чём речь, этих методов пока два - изучение исходников на js и вопросы на форум. Может, в Wiki базу кто-нибудь составит со временем.

Кстати, вот тут тоже изложена методика, но у меня нет DOM Inspector, поэтому я пытался выдирать команды из предложенных там страниц, но видимо я чего-то не понял и результата был нулевым... :(

stEp пишет

Кстати, вот тут тоже изложена методика...

это наверно offtop, но как-бы объединить в Wiki то что пишет kosticus с тем что предложил Dimanish?

e-travel

это наверно offtop, но как-бы объединить в Wiki то что пишет kosticus с тем что предложил Dimanish?

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

e-travel
Предлагаю взять все лучшее из моего сообщения, + то, что написал Anton + то, что здесь, оформить как следует, и отправить в Wiki, всего-то дел :) , зато получится очень даже наглядная статья по настраиванию горячих клавиш в FF, TB. Успехов.

stEp
это предложение к писателям Wiki :) . Я написал ваше имя в цитате, что-бы сохранить ваше авторское право на ссылку :P

наверное последний вопрос)
можно ли реализовать таймер? я пробовал, но видно чего-то не понимаю.

Bananas пишет

...
можно ли реализовать таймер?...

Можно.

1.1. Запуск таймера:

Выделить код

Код:

if (!document. getElementById ("timer_label"))
{
    var x = document. createElement ("label");
    x. setAttribute ("id", "timer_label");
    var mt = document. getElementById ("toolbar-menubar");
    var ts = document. getElementById ("menubar-items"). nextSibling;
    mt. insertBefore (x, ts);
    window. timerVal = 0;
    window. timerFunc = function ()
    {
        var y = document. getElementById ("timer_label");
        y. setAttribute ("value", window. timerVal++);
    }
    window. timerID = window. setInterval (window. timerFunc, 1000);
}

1.2. Остановка:

Выделить код

Код:

var x = document. getElementById ("timer_label");
if (x)
{
    x. parentNode. removeChild (x);
    window. clearInterval (window. timerID);
}

2. Отложенное выполнение:

Выделить код

Код:

window. timeoutID = window. setTimeout (function () { alert ("delayed action"); }, 5000);

Шаблоны:
1. Таймеры
1.1. Запуск таймера:

Выделить код

Код:

var TimerID = "newTimerID"; // строка-идентификатор таймера, должна быть уникальной для каждого нового таймера
var TimerFN = "newTimerFN"; // строка-идентификатор функции таймера
var TimerVL = "newTimerVL"; // строка-идентификатор "связанного" с таймером значения, должна быть уникальной для каждого нового таймера
var interval = 1000; // значение задержки
if (!window [TimerID])
{
    window [TimerFN] = function ()
    {
        // действия по таймеру
        ...
    }
    // действия, единожды выполняемые при запуске таймера
    ...
    window [TimerVL] = 0;
    window [TimerID] = window. setInterval (window [TimerFN], interval);
}

1.2. Останов таймера:

Выделить код

Код:

var TimerID = "newTimerID";
var TimerFN = "newTimerFN";
var TimerVL = "newTimerVL";
if (window [TimerID])
{
    window. clearInterval (window [TimerID]);
    window [TimerID] = undefined;
    window [TimerFN] = undefined;
    window [TimerVL] = undefined;
    // действия, выполняемые при останове таймера
    ...
}

2. Таймауты
2.1. Инициализация

Выделить код

Код:

var TimeoutID = "newTimeoutID"; // строка-идентификатор таймаута, должна быть уникальной для каждого нового таймаута
var TimeoutFN = "newTimeoutFN"; // строка-идентификатор функции таймаута
var interval = 10000; // интервал задержки
if (!window [TimeoutID])
{
    window [TimeoutFN] = function ()
    {
        window [TimeoutID] = undefined;
        window [TimeoutFN] = undefined;
        // действия по таймауту
        ...
    }
    // действия, выполняемые перед инициализацией таймаута
    ...
    window [TimeoutID] = window. setTimeout (window [TimeoutFN], interval);
}

2.2. Отмена таймаута

Выделить код

Код:

var TimeoutID = "newTimeoutID";
var TimeoutFN = "newTimeoutFN";
if (window [TimeoutID])
{
    window. clearTimeout (window [TimeoutID]);
    window [TimeoutID] = undefined;
    window [TimeoutFN] = undefined;
    // действия, выполняемые при отмене таймаута
    ...
}

таймаут то что надо)

эксперимент показал что с помощью keyconfig можно очень многое. удалось повесить на горячую клавишу  запуск программы, код из external app buttons. и проверку орфографии вордом с помощью оперного spell.vbs.

Dimanish пишет

Все, я вроде разобрался с установкой горячих клавиш в FF и TB.
Путь к успеху таков: смотря что настраиваем FF или TB, ставим расширения:
MenuManipulator для FF и/или MenuManipulator для TB.
Затем расширение keyconfig.
Установив расширения запускаем браузер/почтовик.
Заходим в Инструменты->Расширения->MenuManipulator.
В MenuManipulator напротив настраиваемой команды смотрим значение command или oncommand.
Копируем его (Edit->Ctrl-C).
Запускам keyconfig и создаем новое сочетание для нужной команды: Add a new key.
В поле Name пишем любое имя для будущей команды (например "Обновить все вкладки").
В поле /* CODE */ пишем значение того самого command или oncommand, которые мы смотрели при помощи  ->MenuManipulator (например "gBrowser.reloadAllTabs();")
Вот, собственно и все. Перезапускаем браузер/почтовик.

Если вышеуказанная методика не работает, можно попробовать следующую.
Шаблон:

Выделить код

Код:

var y = document. getElementsByAttribute ("label", "Расширения");
y.item(0).click();

В первой строке указывается название необходимого пункта меню. Во второй строке, возможно, придется "поиграться" с числами. Диапазон изменения чисел можно узнать, заменив вторую строку следующим кодом:

Выделить код

Код:

alert(y.length);

Если alert показывает, допустим, 2, то возможные значения будут 0, 1.

Anton
Тебе как к гуру :) такой вопрос, можно ли при помощи keyconfig назначить горячую клавишу на открытие какой-либо страницы?

P.S. Конкретно, есть закладка Force Wrap, хотелось бы повесить на нее гор. клавишу.

Dimanish пишет

...можно ли при помощи keyconfig назначить горячую клавишу на открытие какой-либо страницы?

P.S. Конкретно, есть закладка Force Wrap, хотелось бы повесить на нее гор. клавишу.

Извиняюсь, сейчас только заметил. Можно. Вот так:

Выделить код

Код:

loadURI ("...", null, null);

Anton
Спасибо, работает.

Как сделать переход по вкладкам (на левую и на правую) с помощью клавиш 1 и 2?

STNG пишет

Как сделать переход по вкладкам (на левую и на правую) с помощью клавиш 1 и 2?

Next Tab

Выделить код

Код:

gBrowser.mTabContainer.advanceSelectedTab(1);

Previous Tab

Выделить код

Код:

gBrowser.mTabContainer.advanceSelectedTab(-1);
Выделить код

Код:

Вперед: BrowserForward();
Назад: BrowserBack();
К началу: BrowserHome();
Обновить из сети: BrowserReloadSkipCache()
Уменьшить размер шрифта: ZoomManager.prototype.getInstance().reduce();
Увеличить размер шрифта: ZoomManager.prototype.getInstance().enlarge();
Обычный размер шрифта: ZoomManager.prototype.getInstance().reset();
Полноэкранный режим: BrowserFullScreen();
Информация о странице: BrowserPageInfo();
Найти на этой странице: onFindCmd();	
Найти следующее: onFindAgainCmd();
Найти предыдущее: onFindPreviousCmd();
Добавить страницу в закладки: addBookmarkAs(document.getElementById('content'), false);
Добавить вкладки в закладки: addBookmarkAs(document.getElementById('content'), true);
Свойства закладки: goDoCommand('cmd_bm_properties');

P.S. Помните, что на одно и тоже действие можно назначать более одной комбинации клавиш.
Сочетания клавиш вида: Ctrl+... , Ctr+Alt+... , Ctrl+Shift+... , Ctrl+Alt+Shift+... работаю как для русской, так и для английской раскладки.
Если хотите использовать сочетания: отдельная буква [к примеру G: /* CODE */ ILO.indicatorClick();] , а также Alt+... , Alt+Shift+... , Shift+... как для русской, так и для английской раскладки придется продублировать соответствующее сочетание для русской раскладки [к примеру П: /* CODE */ ILO.indicatorClick();]
P.S.S. Кто у нас шибко грамотный, оформите, пожалуйста, статью http://forum.mozilla.ru/doku.php?id=general:tips:hotkeys по-человечески.

Выделить код

Код:

1. Следующая вкладка: gBrowser.mTabContainer.advanceSelectedTab(1); 
2. Предыдущая вкладка: gBrowser.mTabContainer.advanceSelectedTab(-1);
Выделить код

Код:

gBrowser.mTabContainer.advanceSelectedTab(1,true);
gBrowser.mTabContainer.advanceSelectedTab(-1,true);

Так будет более правильно.

хм.. а можно повесить вызов меню на клавишу?

Alt

если панель меню скрыть?

Можешь поставить расширение Autohide - в полноэкранном режиме скрывает/показывает любые панели.
Еще расширения из этой же серии: autoHideStatusbar и hidetabbar

Bananas пишет

хм.. а можно повесить вызов меню на клавишу?

Можно.
Для контекстного меню просто (слишком просто ;))

Выделить код

Код:

var cm = document. getElementById ("contentAreaContextMenu");
cm. showPopup (window. getBrowser (), 0, 0, "context");

Для главного меню посложней:

Выделить код

Код:

var reqMenu = "view-menu";
var x = 0;
var y = 0;
var fm = document. getElementById (reqMenu);
var fmp = fm. getElementsByTagName ("menupopup")[0];
var ps = document. getElementById ("keyconfigPopups");
if (!ps)
{
    ps=document. createElement("popupset");
    ps. setAttribute ("id", "keyconfigPopups");
    window. getBrowser (). appendChild (ps);
}
var nfmp = fmp. cloneNode (true);
if (!ps. getElementsByAttribute ("id", reqMenu) [0])
    ps. appendChild (nfmp);
else
    nfmp = ps. getElementsByAttribute ("id", reqMenu) [0];
nfmp. showPopup (window. getBrowser (), x, y, "context");

Пункты главного меню
Значения переменной reqMenu
Файлfile-menu
Правкаedit-menu
Видview-menu
Переходgo-menu
Закладкиbookmarks-menu
Инструментыtools-menu
СправкаhelpMenu

если панель меню скрыть?

Выделить код

Код:

var mb = document.getElementById("toolbar-menubar"); mb.collapsed = !mb.collapsed;

спасибо, работает, можно избавиться от панели меню)
правда если открыто два окна получается, что x, y координаты относительно первого окна, т.е. когда я пытаюсь указать для х половину ширины окна (focusedWindow) меню появляется не там где ожидается...
и еще не совсем понятно как добраться до координат курсора..

---
исправилось добавлением соотв. screenX screenY

меню bookmarks вызванное таким образом не содержит закладок((

1.

Bananas пишет

меню bookmarks вызванное таким образом не содержит закладок((

У меня всё в порядке - закладки в меню отображаются.

2.
Немного изменил код для учёта состояния "галочек" в меню:

Выделить код

Код:

var reqMenu = "bookmarks-menu";
var fm = document. getElementById (reqMenu);
var fmp = fm. getElementsByTagName ("menupopup")[0];
var ps = document. getElementById ("keyconfigPopups");
if (!ps)
{
    ps=document. createElement("popupset");
    ps. setAttribute ("id", "keyconfigPopups");
    window. getBrowser (). appendChild (ps);
}
var nfmp = fmp. cloneNode (true);
if (ps. getElementsByTagName ("menupopup"). length > 0)
{
    var op = ps. getElementsByTagName ("menupopup") [0];
    ps. removeChild (op);
}
ps. appendChild (nfmp);
nfmp. showPopup (window. getBrowser (), 20, 20, "context");

Можно ли сделать возврат к последнему N выбранному табу в обе стороны, как в TBE:Focus Previously Selected Tab Module?

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

Есть табы 1, 2, 3, 4, 5, 6, 7. Они были просмотрены в порядке 5→4→2→3. С помощью TBE:FPST можно перемещаться по истории просмотра табов, т.е. по нажатию одной клавиши это будет история назад (3→2→4→5), другой — историю вперёд (если текущая вкладка по переходу назад — 2, то доступно перемещение вперёд: 4→2→3). Т.е. это расширенный вариант функции TabFlip, активизирующую последний выбранный таб.

djet пишет

Можно ли сделать возврат к последнему N выбранному табу в обе стороны, как в TBE:Focus Previously Selected Tab Module?

Можно. Правда, средствами одного keyconfig это будет сложно. Поэтому приведу решение для keyconfig+TBE (с включенным tabflip).

Вперёд по истории просмотра:

Выделить код

Код:

var cont = document. getElementById ("content");
cont. advanceSelectedTabByLastFocusedTime (1);

Назад по истории просмотра:

Выделить код

Код:

var cont = document. getElementById ("content");
cont. advanceSelectedTabByLastFocusedTime (-1);

Не проверял, но, возможно 1/-1 можно заменить на n/-n.

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

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

Выделить код

Код:

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

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

djet пишет

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

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

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

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

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

djet пишет

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

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

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

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

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

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

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

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

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

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

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

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

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

Вперёд:

Выделить код

Код:

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

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

Назад:

Выделить код

Код:

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

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

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

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

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

Ice_sCream пишет

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

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

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

Выделить код

Код:

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

Сойдёт ?

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

Выделить код

Код:

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

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

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

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

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

Выделить код

Код:

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

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

Anton

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

Теперь есть.

Unghost пишет

Anton

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

Теперь есть.

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

Выделить код

Код:

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

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

Anton

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

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

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

Выделить код

Код:

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

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

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

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

Выделить код

Код:

else
    toggleSidebar ('viewBookmarksSidebar');

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

Выделить код

Код:

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

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

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

Выделить код

Код:

else
Bookmarks

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

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

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

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

Вот здесь: http://forum.mozilla.ru/viewtopic.php?pid=75035#p75035 я приводил код, позволяющий вызывать какой-либо из пунктов главного меню. В общем, в том коде была недоработка, связанная с добавлением элементов при каждом вызове меню, а также с неработоспособностью меню "Закладки". Первый код я исправил, а для меню "Закладки" нужен отдельный код, вот он:

Выделить код

Код:

var fm = document. getElementById ("bookmarks-menu");
var fmp = fm. getElementsByTagName ("menupopup")[0];
var ps = document. getElementById ("keyconfigPopups");
if (!ps)
{
    ps=document. createElement("popupset");
    ps. setAttribute ("id", "keyconfigPopups");
    window. getBrowser (). appendChild (ps);
}
var nfmp = fmp. cloneNode (true);
nfmp. setAttribute ("oncommand", "BookmarksMenu.loadBookmark(event, event.target, this.database)");
nfmp. setAttribute ("onclick", "BookmarksMenu.loadBookmarkMiddleClick(event, this.database)");
if (ps. getElementsByTagName ("menupopup"). length > 0)
{
    var op = ps. getElementsByTagName ("menupopup") [0];
    ps. removeChild (op);
}
ps. appendChild (nfmp);
nfmp. showPopup (window. getBrowser (), 20, 20, "context");

p.s. 2e-travel: если средствами одного только keyconfig, то, скорее всего, потребуется клавиша, которая будет "включать" такую возможность.
p.p.s.

e-travel пишет

...значит ты тоже подключился к написанию этого материала...

Я всего-лишь исправил кое-какие неточности в коде и добавил одну ссылку.

Anton
Нужно чтобы по Alt+B выполнялась своя команда, как и раньше -  выделение текста жирным в Wiki: wikicode.notagcode('**','**');. Но по Alt происходит переход в верхнее меню (по Alt+B - переход в меню Закладки). Это можно отключить?

Можно. Только с "включателем".
Делаем клавишу, допустим Alt+0 c кодом

Выделить код

Код:

if (!window. keyconfigAltBHandler)
{
    window. keyconfigAltBHandler = function (event)
    {
        if (event. altKey && (event. altKey == true) &&
            (event. charCode == "b". charCodeAt (0)))
        {
            ....
            event. preventDefault ();
        }
    }
    window. addEventListener ("keypress", window. keyconfigAltBHandler, true);
}

Там, где многоточие вставляем код для Alt+b. Перед первым применением нажимаем Alt+0.

Anton
Странно, у меня этот код почему то не работает, все сделал вроде правильно.

Ну, не знаю. У меня русифицированная версия (закладки на Alt+З). Вот код на Alt+5:

Выделить код

Код:

if (!window. keyconfigAltBHandler)
{
    window. keyconfigAltBHandler = function (event)
    {
        if (event. altKey && (event. altKey == true) &&
            (event. charCode == "з". charCodeAt (0)))
        {
            wikicode.notagcode ('**','**');
            event. preventDefault ();
        }
    }
    window. addEventListener ("keypress", window. keyconfigAltBHandler, true);
}

Нажимаю Alt+5, после чего Alt+З начинает вставлять **|**.

Anton
Извиняюсь, все работает, я не ту горячую клавишу указывал для команды. Нужно было указать hetkey "включателя" (Alt+0), а у меня по прежнему стояло Alt+b, сбила с толку строчка:

Выделить код

Код:

(event. charCode == "b". charCodeAt (0)))

подумал что в : charCodeAt (0) и указывается горячая клавиша для включателя. Второй пример все объяснил, спасибо.
У включателя, как я понял, есть один недостаток: он работает только 1 раз и чтобы он сбросился, нужно перезагрузиться. Например нельзя нажав второй раз Alt+0 и по Alt+b по прежнему переходить в закладки, хотя это и не так важно. А можно вообще отключить вызов меню по Alt? Я этим вообще не пользуюсь и нужно чтобы Alt был свободен.

Делаем файл, допустим bookmarks_menu.xml:

Выделить код

Код:

<?xml version="1.0"?>

<bindings id="bookmarksMenu"
          xmlns="http://www.mozilla.org/xbl"
          xmlns:xbl="http://www.mozilla.org/xbl"
          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <binding id="bookmarks_menu"
           extends="chrome://global/content/bindings/menu.xml#menu-menubar">
    <implementation>
        <constructor>
            this. removeAttribute ("accesskey");
        </constructor>
    </implementation>
  </binding>

</bindings>

и "пришиваем" его через userChrome.css:

Выделить код

Код:

#bookmarks-menu { -moz-binding: url("file://C:/bookmarks_menu.xml#bookmarks_menu") !important; }

Можно и к другой менюшке "пришить" с тем же эффектом.

А лучше бы автор WikiCode "расстарался" на хоткеи...

Anton
класс, красота, и не нужно никаких "включателей", спасибо. Интересно это выглядит:
bookmarks_accesskey.png
Исчезло подчеркивание у буквы B, как раз то что мне нужно.

Для полного счастья не хватает отключить команду переключения по вкладкам через Ctrl+цифра, это мне тоже не нужно, а свободные комбинации не помешают. И еще не удалось найти работающую команду для keyconfig чтобы можно было управлять расширением Edit Config Files, а именно настроить редактирование userChrome.css по горячей клавише. С помощью Menu Manipulator определил для него такие параметры:
label: userChrome.css
oncommand: editconfigfilesOverlay.onMenu(this.label);
oncommand не работает, может нужно еще и label в код записать?

e-travel пишет

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

Можно добавить в конструктор вышеуказанного xml

Выделить код

Код:

window. setTimeout
            (
                function ()
                {
                    window. removeEventListener ("keypress", ctrlNumberTabSelection, false);
                },
                1000
            );

...
label: userChrome.css
oncommand: editconfigfilesOverlay.onMenu(this.label);
oncommand не работает, может нужно еще и label в код записать?

Похоже так.

Anton
Хорошо, с вкладками получилось, еще раз спасибо. Остался вопрос с объединением label и oncommand в одну команду, как бы это сделать? Хотел спросить, а где вообще можно почитать об синтаксисе скриптов, которые вставляются в keyconfig, на каком языке пишутся эти скрипты? А то получается что я бездумно вставляю все коды, которые были написаны выше, а что они означают не очень понимаю. Чем можно руководствоваться при написании таких скриптов? Думаю многим будет интересно это знать.

e-travel
Для Edit Config Files попробуй это:

Using keyconfig.

   1. Install keyconfig
   2. Add the following to prefs.js (DON'T add to user.js!)

      user_pref("keyconfig.main.xxx_key__Edit Config Files - userChrome.css", "!][][][editconfigfilesOverlay.onMenu('userChrome.css');");
      user_pref("keyconfig.main.xxx_key__Edit Config Files - userContent.css", "!][][][editconfigfilesOverlay.onMenu('userContent.css');");
      user_pref("keyconfig.main.xxx_key__Edit Config Files - prefs.js", "!][][][editconfigfilesOverlay.onMenu('prefs.js');");
      user_pref("keyconfig.main.xxx_key__Edit Config Files - user.js", "!][][][editconfigfilesOverlay.onMenu('user.js');");
      user_pref("keyconfig.main.xxx_key__Edit Config Files - about:config", "!][][][editconfigfilesOverlay.openAboutConfig(event);");
      user_pref("keyconfig.main.xxx_key__Edit Config Files - Open Profile Folder", "!][][][editconfigfilesOverlay.openProfileFolder();");
      user_pref("keyconfig.main.xxx_key__Edit Config Files - Open Installation Folder", "!][][][editconfigfilesOverlay.openInstallationFolder();");
      user_pref("keyconfig.main.xxx_key__Edit Config Files - Settings...", "!][][][editconfigfilesCommon.openSettingsDialog();");

   3. Open the keyconfig window, and set your keyboard shortcut to "Edit Config Files - ???".

editconfigfiles_keyconfig.png

e-travel пишет

...Остался вопрос с объединением label и oncommand в одну команду, как бы это сделать?...

Ну если

label: userChrome.css
oncommand: editconfigfilesOverlay.onMenu(this.label);

то c вероятностью, очень близкой к 1 что

Выделить код

Код:

editconfigfilesOverlay.onMenu("userChrome.css");

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

Я, кажется уже говорил в этой теме, на каком языке они пишутся. Общий синтаксис можно изучить здесь: http://wdh.suncloud.ru/js01.htm#ref3

...Чем можно руководствоваться при написании таких скриптов?...

xul+js исходнымы текстами firefox/thunderbird, а чем же ещё.

Modex
спасибо :), заработал код который дал Anton для keyconfig, оказывается label и oncommand объединить довольно просто.

Вот может быть кому-то поможет расширение functions for keyconfig, правда сам я его не тестировал
http://www.pqrs.org/~tekezo/firefox/extensions/functions_for_keyconfig/
Оно добавляет в список для keyconfig некоторые сочетания клавиш для функции, которые изначально в keyconfig отсутствуют.

А как сделать горячие клавиши для открытия одной из панелей инструментов (если она до этого была закрыта? Что-то не могу догадаться.:blush:

...горячие клавиши для открытия одной из панелей инструментов...

Выделить код

Код:

document. getElementById ("id нужной панели инструментов"). collapsed = false;

Anton, спасибо. Но оказалось, что не нужно... :blush:

Повесил на Ctrl+Q выход из Firefox командой: goQuitApplication();
Теперь как в Thunderbird выходит, красота :) . Раньше по этому сочетанию вызывалась Translation Panel, пришлось заменить на другое, чтобы по Ctrl+Q выход работал.

Появилось расширение functions for keyconfig. Быть может кому-нибудь будет полезно.

Quicksilver tears
Не появилось, а обновилось ;)

Ice_sCream пишет

Скачал и распечатал список горячих клавиш с офиц. сайта. Но так и не понял что нажимать, чтобы "Закрыть все, кроме активной".
И еще - как сделать, чтобы эта кнопка была на панеле инструментов? Плагин может какой-то посоветуте.
Спасибо.

Дайте пожалуйста ссылку на офиц. сайт, где есть список горячих клавиш. Я не нашел... :(

dancemaster
http://www.mozilla.org/support/firefox/keyboard

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

Выделить код

Код:

gBrowser.mPanelContainer.childNodes.length

показывает общее кол-во вкладок - это немного не то.
также интересует как прочесть URL страницы, открытой в каждой вкладке.
идея такая: по хоткею надо открывать определенную страницу, но если она уже открыта, то надо переключаться на вкладку с ней, а если еще не открыта, то открывать её в новой вкладке (а если есть хоть одна пустая вкладка - то в этой пустой вкладке!).
пока реализовал это так:

Выделить код

Код:

if (gBrowser.mPanelContainer.childNodes.length > 1) 
{window.getBrowser().addTab('http://someurl.ru');}
 else
{loadURI('http://someurl.ru');}

идея такая: по хоткею надо открывать определенную страницу, но если она уже открыта, то надо переключаться на вкладку с ней, а если еще не открыта, то открывать её в новой вкладке (а если есть хоть одна пустая вкладка - то в этой пустой вкладке!).

В принципе, всё нужное для этого есть здесь: http://forum.mozilla-russia.org/viewtop … 627#p76627
можно ещё добавить:
document. getElementById ("content"). mTabs. item (n). linkedBrowser. currentURI. spec // адрес открытой в n-й вкладке страницы
document. getElementById ("content"). mTabBox. selectedIndex = n // переключение на n-ю вкладку

а какой командой можно открыть последнюю закрытую вкладку?

undoCloseTab()

огромное спасибо за ответы!
я ищу пустую вкладку следующим кодом

Выделить код

Код:

var cont = document.getElementById ("content");
 for (var i = 0; i < cont.mTabs.length; i++)
   if (cont.mTabs.item(i).linkedBrowser.currentURI.spec == 'about:blank')
      {
        // здесь должен быть код, для открытия необходимого URL в найденной
        // вкладке i
        break;
      }

что за команду я могу использовать для открытия URL в определенной вкладке??

cont.mTabs.item(i).linkedBrowser.loadURI(uri, null /*referrerURI*/, null /*charset*/);

так, возник еще вопрос: как определить, что во вкладке n в настоящий момент происходит загрузка страницы?

if ((...linkedBrowser. docShell. busyFlags & 4) == 4)
так наверное

не работает, к сожалению... есть еще варианты?

не работает

Что именно не работает ?

Подскажите как задать хоткей на появление\исчезновение направляющих (LineGuides) в WebDeveloper? Где ошибся?  webdeveloper_DisplayLineGuide()

Где ошибся?

в аргументах

Выделить код

Код:

var lgItem = document. getElementById ("webdeveloper-display-line-guides-toolbar");
if (lgItem. hasAttribute ("checked"))
	lgItem. removeAttribute ("checked");
else
	lgItem. setAttribute ("checked", "true");
webdeveloper_displayLineGuides (lgItem, false); // p.s. - вернее, true

Anton
спасибо!!! работает!

Смотрю тут в основном добавить пытаются горячие клавиши :)
А мне надо удалить, нужно чтоб Firefox не реагировал на Ctrl Alt и Shift при нажатии на ссылку (например Shift и клик на ссылке открывает ее в новой вкладке, мне этого не надо), кто знает что сделать надо?

Вопрос: как можно отключить комбинацию ctrl+колёсико мышки? Проблема в том что переключаюсь с закладки на закладку используя комбинацию клавиш ctrl+Tab но часто именно в этот момент пытаюсь уже прокрутить колёсиком страничку и случайно получается что подключаю другую комбинацию. Вот и возник вопрос как можно (возможно ли!?) отключить одну комбинацию?:whiteflag:

Timoha
Эта комбинация, вроде, по дефолту отключена. стоит Tab Mix Plus? Если да, то это есть в его настройках.

stoneflash
Да, Tab Mix Plus установлен, спасибо за совет. Пошёл искать...
Пришёл обратно...только вот не нашёл я в настройках Tab Mix Plus данного пункта по шрифтам к сожалению. Может сможешь поточнее подсказать?:whiteflag:
Хммм..перечитав ещё раз твой совет то у меня создалось впечатление что мы говорим немного мимо...на всякий случай повторюсь: я хочу отключить комбинацию изменение размера шрифта (ctrl- колёсико мыши).

Timoha
В about:config установите параметр mousewheel.withcontrolkey.action равным "-1" (там по умолчанию "3")

usergen
А это отключит мышь или только ту комбинацию что мне нужна?

А это отключит мышь

да, и электричество во всем городе ;)
вот, почитайте, если страшно: http://backup.mozilla.ru/pref/pref.html#_middlemouse_

usergen
:) Я имел в ввиду не отключение полностью мыши а именно горячей комбинации.:tongue2: Но шутка удалась.;)
Спасибо за ссылочку, прочитал (ну и инфы там однако, на долго хватит), понял, сделал, заработало как надо!

народ,а как откл кнопкe ctrl+W(вкладка не закрывалась?

EATEN
KeyConfig

EATEN
Тебе уже дал ссылку в другой теме на сообщение из этой. Читай.

Часто пользуюсь функцией «Копировать ссылку». Решил повесить ее на горячую клавишу. Написал в keyconfig команду cmd_copyLink, назначил горячие клавиши. Навожу на ссылку, жму сочетание клавиш - ничего не работает. Что я не правильно делаю? Заранее спасибо за помощь…

Что я не правильно делаю

Скорее всего, не отдаёшь фокус ссылке. Держи:

Выделить код

Код:

with (Components)
with (interfaces)
try
{
	var link = window. XULBrowserWindow. overLink;
	var ssi = classes ["@mozilla.org/supports-string;1"].
			  createInstance (nsISupportsString);
	ssi. data = link;
	var ti = classes ["@mozilla.org/widget/transferable;1"].
			 createInstance (nsITransferable);
	ti. addDataFlavor ("text/unicode");
	ti. setTransferData ("text/unicode", ssi, link. length * 2);
	var clipbd = classes ["@mozilla.org/widget/clipboard;1"].
				 getService (nsIClipboard);
	clipbd. setData (ti, null, nsIClipboard. kGlobalClipboard);
}
catch (e) {}

должно работать.

Спасибо, Anton! Ты мне помог сэкономить кучу времени!

как запустить стороннюю программу? (например wget)

Примерно так:

Выделить код

Код:

var file = Components. classes ['@mozilla.org/file/local;1'].
		   createInstance (Components. interfaces. nsILocalFile);
var process = Components. classes ['@mozilla.org/process/util;1'].
			  getService (Components. interfaces. nsIProcess);
file. initWithPath ("C:\\application.exe"); 
// file. launch ();
process. init (file);
process. run (false, "", 1);

Подскажите пожалуйста как быстро добираться до настроек прокси.(в руководстве сочетаний клавиш не нашёл)
Кстати в "опере" тоже не нашёл, вынужден пользоваться Maxthon v2.0., там это единственно удобная вещь.

Спасибо за ответ.

Ded Sad
Может поставить какое-нибудь расширение для работы с прокси?

Merlyel пишет

Ded Sad
Может поставить какое-нибудь расширение для работы с прокси?

Достойное решение проблеммы, спасибо!

Можно-ли на горячие клавиши повесить адрес, который по ним будет вставляться в адресную строку (но не заходя на него)? И если да, то как?
Заранее спасибо.

Выделить код

Код:

document. getElementById ("urlbar"). value = "http://ya.ru";

можно ещё добавить

Выделить код

Код:

document. getElementById ("urlbar"). focus ();
var ifi = document. getElementById ("urlbar"). inputField;
ifi. selectionStart = ifi. selectionEnd;

- тогда курсор будет находится в конце вставленного адреса.

Anton пишет
Выделить код

Код:

document. getElementById ("urlbar"). value = "http://ya.ru";

можно ещё добавить

Выделить код

Код:

document. getElementById ("urlbar"). focus ();
var ifi = document. getElementById ("urlbar"). inputField;
ifi. selectionStart = ifi. selectionEnd;

- тогда курсор будет находится в конце вставленного адреса.

а можно по шагам, пажалуста, а-то я чайник совсем, и нифига ниасилил :blush:

Mezha
"По шагам" здесь: http://forum.mozilla-russia.org/viewtop … 271#p67271

А вот как бы переключаться между пунктами "Без стиля" и "Основной стиль страницы" с помощью одного хоткея?
Через DOM Inspector нашел следующие oncommand:

Выделить код

Код:

setStyleDisabled(true);
setStyleDisabled(false);

которые можно повесить на разные хоткеи. А вот как бы это всё прикрутить на один хоткей?

И ещё такой вопрос: есть ли команда (нужна для хоткея) которая бы позволяла добавлять страницу в закладки не спрашивая куда конкретно её сохранять, т.е. не появлялось бы соответствующего окна с запросом (сохранять нужно в "корень" и с именем которое предлагается по умолчанию)?

stEp
1.

Выделить код

Код:

if (window ["hkStyleSwitcher"] == undefined)
	window ["hkStyleSwitcher"] = true;
setStyleDisabled (window. hkStyleSwitcher);
window. hkStyleSwitcher = !window. hkStyleSwitcher;

2.

Выделить код

Код:

PlacesCommandHook.bookmarkCurrentPage(false, PlacesUtils.bookmarksMenuFolderId);

Anton, огромное спасибо!

А что нужно прописать, чтобы лис открывал в новой вкладке адрес, находящийся в буфере обмена?

Выделить код

Код:

openUILinkIn (readFromClipboard (), "tab")

Спасибо =)

Najlus пишет

А что нужно прописать, чтобы лис открывал в новой вкладке адрес, находящийся в буфере обмена?

Ещё можно поставить расширение Paste and Go 3 и немного настроить его.

Проблема с кодом для запуска внешнего приложения (пост127)
Хочу, чтобы у меня при нажатии запускался агент, но не пашет кнопка.

Выделить код

Код:

var file = Components. classes ['@mozilla.org/file/local;1'].
           createInstance (Components. interfaces. nsILocalFile);
var process = Components. classes ['@mozilla.org/process/util;1'].
              getService (Components. interfaces. nsIProcess);
file. initWithPath (""C:\Program Files\Mail.Ru\Agent\magent.exe""); 
// file. launch ();
process. init (file);
process. run (false, "", 1);
SYSTEM пишет
Выделить код

Код:

file. initWithPath (""C:\Program Files\Mail.Ru\Agent\magent.exe"");

Убрать лишние кавычки и удвоить обратные слэши (\\).

А в Firefox 3.5 и выше будет работать только примерно вот так:

Выделить код

Код:

function startProcess(path, args) {
	args = args || [];
	var file = Components.classes["@mozilla.org/file/local;1"]
		.createInstance(Components.interfaces.nsILocalFile);
	file.initWithPath(path);
	if(!file.exists()) {
		alert(path + "\nnot found!");
		return;
	}
	var process = Components.classes["@mozilla.org/process/util;1"]
		.createInstance(Components.interfaces.nsIProcess);
	process.init(file);
	process.run(false, args, args.length);
}

startProcess("C:\\Program Files\\Mail.Ru\\Agent\\magent.exe");

А как сделать кнопку на запуск расширения? Нужно для того, чтобы изменить иконку FoxTab. То есть я создам собственную кнопку и при нажатии будут открываться окошки 3D.

SYSTEM пишет

...чтобы изменить иконку....

SYSTEM

в этой теме > http://forum.mozilla-russia.org/viewtop … 22#p335722 посты № 1,4,11,15 возможно что помогут это сделать :)

ОбЪясните мне как попасть в кейконфиг ) И как поставить потом горячию клавишу на команду "автомат загружать изображение" Сразу оговоримся что я не шарю вообще так что господа пошагам пожайлуста .

Помогите пожалуйста.

Нужен код для вставки текста допустим "Превед" при нажатии комбинации. То есть вставка уже готового "забитого" текста.

FOUX
используй punto switcher - функция автозамена.

Sergeys
вы уверены что это что мне нужно? Он просто делает замену текста, а не вставляет готовый.

FOUX
а какая разница, если при вводе например: пд (сделано вами в настройках ps) - будет вставлен превед?

Sergeys
разница в том что при вводе этого "пд" замена будет вставлена ВЕЗДЕ.

Подскажите пожалуйста, как настроить хоткеи: закрыть вкладку - правый Ctrl+Delete, следующая вкладка - правый Ctrl+End и чтобы не удалились стандартные хоткеи для этих команд Ctrl+W, Ctrl+Tab.
И в какой файл вставить настройки. :)

http://forum.mozilla-russia.org/viewtopic.php?pid=465848#p465848
помогите пожалуйста...

Anton пишет

Что я не правильно делаю

Скорее всего, не отдаёшь фокус ссылке. Держи:

Выделить код

Код:

with (Components)
with (interfaces)
try
{
    var link = window. XULBrowserWindow. overLink;
    var ssi = classes ["@mozilla.org/supports-string;1"].
              createInstance (nsISupportsString);
    ssi. data = link;
    var ti = classes ["@mozilla.org/widget/transferable;1"].
             createInstance (nsITransferable);
    ti. addDataFlavor ("text/unicode");
    ti. setTransferData ("text/unicode", ssi, link. length * 2);
    var clipbd = classes ["@mozilla.org/widget/clipboard;1"].
                 getService (nsIClipboard);
    clipbd. setData (ti, null, nsIClipboard. kGlobalClipboard);
}
catch (e) {}

должно работать.

Почему не работает на 12ой версии?

Возможно ли без установки специальных расширений удалить/переназначить хоткей выхода из ФФ (CTRL+Q) ?
Так как он находится рядом с CTRL+W, то по ошибке бывает закрытие ФФ.

Господа, как можно переназначить горячую клавишу? И можно ли переназначить ее стандартными средствами?
Firefox 13.0.1

Конкретно, Ctrl+Shift+W, которая идентична Alt+F4 (закрывает окно).
В купе с тем, что ФФ до сих пор :D не умеет сохранять сессии, состоящие из нескольких окон, случайное нажатие этой комбинации (вот уже третий раз за полгода) сильно бесит.

nocturna пишет

В купе с тем, что ФФ до сих пор :D не умеет сохранять сессии...

?? Инструменты → Настройки → Основные → При запуске Firefox → Показать окна и вкладки, открытые в прошлый раз

Не, не то?

Не, не то?

Не, не то. После закрытия одного окна из, скажем, трех, вкладки на нем закрываются и их не восстановить.
А про сохранение сессии я говорю в контексте этого.

nocturna, если у вас сессия из нескольких окон, и вы заканчиваете её нажав, скажем Файл → Выход, то в следующий раз, при запуске браузера, все ваши окна и вкладки в них восстановятся. Если же вы закрываете одно окно в сессии из нескольких открытых окон, то сессия не завершается — происходит простое закрытие окна.

По поводу вашего вопроса — нет, насколько мне известно, нативно Firefox не позволяет ни переназначать горячие клавиши, ни восстанавливать закрытое окно (повторюсь, простые сессии и сессии из нескольких окон браузер восстанавливает без каких-либо проблем). Замечу ещё, что проблема ваша, показалась мне странной и даже немного надуманной. Расскажите, пожалуйста, что вы такое делаете с браузером, что у вас получается случайно нажать достаточно сложную клавиатурную комбинацию?

Customizable Shortcuts
Key config
оригинальный keyconfig (прямая ссылка)

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

Много печатаю, часто использую левый Ctrl. Вероятно, при наборе заглавной "w" происходит случайное нажатие этой комбинации.
Как временное решение, активировала опцию предупреждения в случае закрытия нескольких вкладок.

Customizable Shortcuts
Key config
оригинальный keyconfig (прямая ссылка)

Спасибо.

nocturna
Просто доступ к сохранённым сессиям сложный. Так-то лиса последние две (вроде бы) сессии сейвит. Если нужна простота - есть менеджер сессий

Просто доступ к сохранённым сессиям сложный. Так-то лиса последние две (вроде бы) сессии сейвит. Если нужна простота - есть менеджер сессий

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

Настраивается. Поковыряйтесь, я настраивал когда-то.

Anton пишет
Dimanish пишет

...можно ли при помощи keyconfig назначить горячую клавишу на открытие какой-либо страницы?

P.S. Конкретно, есть закладка Force Wrap, хотелось бы повесить на нее гор. клавишу.

Извиняюсь, сейчас только заметил. Можно. Вот так:

Выделить код

Код:

loadURI ("...", null, null);

Anton, спасибо ОГРОМНОЕ!!!

подскажите как в firefox убрать горячие клавиши изменения масштаба посредством котрола и мышки, в различных дополнениях есть хоткеи только на клавиатуру :/

Kchtulhoo
mousewheel.withcontrolkey.action — действие при прокрутке колеса с зажатым Ctrl
0 — замедленная прокрутка
1 — прокрутка
2 — ничего (вроде как)
3 (по умолчанию) — масштабирование
4 — сильно замедленная прокрутка
5 и выше (скорее всего) — ничего

Добрый день. Есть ли возможность создать такую же обработку:

Anton пишет

Что я не правильно делаюСкорее всего, не отдаёшь фокус ссылке. Держи:Выделить кодКод:with (Components)
with (interfaces)
try
{
    var link = window. XULBrowserWindow. overLink;
    var ssi = classes ["@mozilla.org/supports-string;1"].
              createInstance (nsISupportsString);
    ssi. data = link;
    var ti = classes ["@mozilla.org/widget/transferable;1"].
             createInstance (nsITransferable);
    ti. addDataFlavor ("text/unicode");
    ti. setTransferData ("text/unicode", ssi, link. length * 2);
    var clipbd = classes ["@mozilla.org/widget/clipboard;1"].
                 getService (nsIClipboard);
    clipbd. setData (ti, null, nsIClipboard. kGlobalClipboard);
}
catch (e) {}должно работать.

не только для ссылок, но и для изображений? При наведении курсора мыши на картинку копируется ссылка на нее по горячей клавише.
Было раньше замечательное дополнение Image Toolbar, но с недавних пор функция копирования ссылки на изображение работать там совсем не хочет :(

ADLion пишет

Было раньше замечательное дополнение Image Toolbar, но с недавних пор функция копирования ссылки на изображение работать там совсем не хочет :(

Попробуй жестами копировать FireGestures

ADLion
Можно вот так попробовать:

Выделить код

Код:

var node = content.document.querySelector(":link:hover, :visited:hover, img:hover");
if(node) {
    Components.classes["@mozilla.org/widget/clipboardhelper;1"]
        .getService(Components.interfaces.nsIClipboardHelper)
        .copyString(node.href || node.src);
}