Вот здесь: 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.
...значит ты тоже подключился к написанию этого материала...
Я всего-лишь исправил кое-какие неточности в коде и добавил одну ссылку.
Отредактировано Anton (04-02-2006 13:56:42)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
Нужно чтобы по Alt+B выполнялась своя команда, как и раньше - выделение текста жирным в Wiki: wikicode.notagcode('**','**');. Но по Alt происходит переход в верхнее меню (по Alt+B - переход в меню Закладки). Это можно отключить?
Fx 2.0.0.8
Отсутствует
Можно. Только с "включателем".
Делаем клавишу, допустим 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.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Ну, не знаю. У меня русифицированная версия (закладки на 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+З начинает вставлять **|**.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
Извиняюсь, все работает, я не ту горячую клавишу указывал для команды. Нужно было указать hetkey "включателя" (Alt+0), а у меня по прежнему стояло Alt+b, сбила с толку строчка:
подумал что в : charCodeAt (0) и указывается горячая клавиша для включателя. Второй пример все объяснил, спасибо.
У включателя, как я понял, есть один недостаток: он работает только 1 раз и чтобы он сбросился, нужно перезагрузиться. Например нельзя нажав второй раз Alt+0 и по Alt+b по прежнему переходить в закладки, хотя это и не так важно. А можно вообще отключить вызов меню по Alt? Я этим вообще не пользуюсь и нужно чтобы Alt был свободен.
Fx 2.0.0.8
Отсутствует
Делаем файл, допустим 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 (05-02-2006 21:46:16)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Для полного счастья не хватает отключить команду переключения по вкладкам через Ctrl+цифра, это мне тоже не нужно, а свободные комбинации не помешают. И еще не удалось найти работающую команду для keyconfig чтобы можно было управлять расширением Edit Config Files, а именно настроить редактирование userChrome.css по горячей клавише. С помощью Menu Manipulator определил для него такие параметры:
label: userChrome.css
oncommand: editconfigfilesOverlay.onMenu(this.label);
oncommand не работает, может нужно еще и label в код записать?
Fx 2.0.0.8
Отсутствует
Для полного счастья не хватает отключить команду переключения по вкладкам через Ctrl+цифра...
Можно добавить в конструктор вышеуказанного xml
window. setTimeout ( function () { window. removeEventListener ("keypress", ctrlNumberTabSelection, false); }, 1000 );
...
label: userChrome.css
oncommand: editconfigfilesOverlay.onMenu(this.label);
oncommand не работает, может нужно еще и label в код записать?
Похоже так.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
Хорошо, с вкладками получилось, еще раз спасибо. Остался вопрос с объединением label и oncommand в одну команду, как бы это сделать? Хотел спросить, а где вообще можно почитать об синтаксисе скриптов, которые вставляются в keyconfig, на каком языке пишутся эти скрипты? А то получается что я бездумно вставляю все коды, которые были написаны выше, а что они означают не очень понимаю. Чем можно руководствоваться при написании таких скриптов? Думаю многим будет интересно это знать.
Fx 2.0.0.8
Отсутствует
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 - ???".
F.I.R.E.F.O.X.: Fearsome, Intimidating, Redhead-Eating Fiend from the Ominous Xenopolis
Скиньтесь мне на новый MacBook Pro! Кто сколько может!
Отсутствует
...Остался вопрос с объединением label и oncommand в одну команду, как бы это сделать?...
Ну если
label: userChrome.css
oncommand: editconfigfilesOverlay.onMenu(this.label);
то c вероятностью, очень близкой к 1 что
...Хотел спросить, а где вообще можно почитать об синтаксисе скриптов, которые вставляются в keyconfig, на каком языке пишутся эти скрипты?...
Я, кажется уже говорил в этой теме, на каком языке они пишутся. Общий синтаксис можно изучить здесь: http://wdh.suncloud.ru/js01.htm#ref3
...Чем можно руководствоваться при написании таких скриптов?...
xul+js исходнымы текстами firefox/thunderbird, а чем же ещё.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Вот может быть кому-то поможет расширение functions for keyconfig, правда сам я его не тестировал
http://www.pqrs.org/~tekezo/firefox/extensions/functions_for_keyconfig/
Оно добавляет в список для keyconfig некоторые сочетания клавиш для функции, которые изначально в keyconfig отсутствуют.
Отредактировано IvanG (10-02-2006 20:04:03)
Отсутствует
А как сделать горячие клавиши для открытия одной из панелей инструментов (если она до этого была закрыта? Что-то не могу догадаться.
Отсутствует
...горячие клавиши для открытия одной из панелей инструментов...
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton, спасибо. Но оказалось, что не нужно...
Отсутствует
Повесил на Ctrl+Q выход из Firefox командой: goQuitApplication();
Теперь как в Thunderbird выходит, красота . Раньше по этому сочетанию вызывалась Translation Panel, пришлось заменить на другое, чтобы по Ctrl+Q выход работал.
Fx 2.0.0.8
Отсутствует
Появилось расширение functions for keyconfig. Быть может кому-нибудь будет полезно.
Отсутствует
Скачал и распечатал список горячих клавиш с офиц. сайта. Но так и не понял что нажимать, чтобы "Закрыть все, кроме активной".
И еще - как сделать, чтобы эта кнопка была на панеле инструментов? Плагин может какой-то посоветуте.
Спасибо.
Дайте пожалуйста ссылку на офиц. сайт, где есть список горячих клавиш. Я не нашел...
Отсутствует
а какой командой можно определить кол-во вкладок, в которых открыта какая-либо страница?
показывает общее кол-во вкладок - это немного не то.
также интересует как прочесть URL страницы, открытой в каждой вкладке.
идея такая: по хоткею надо открывать определенную страницу, но если она уже открыта, то надо переключаться на вкладку с ней, а если еще не открыта, то открывать её в новой вкладке (а если есть хоть одна пустая вкладка - то в этой пустой вкладке!).
пока реализовал это так:
if (gBrowser.mPanelContainer.childNodes.length > 1) {window.getBrowser().addTab('http://someurl.ru');} else {loadURI('http://someurl.ru');}
Отредактировано LA_ (27-10-2006 17:48:36)
Отсутствует
идея такая: по хоткею надо открывать определенную страницу, но если она уже открыта, то надо переключаться на вкладку с ней, а если еще не открыта, то открывать её в новой вкладке (а если есть хоть одна пустая вкладка - то в этой пустой вкладке!).
В принципе, всё нужное для этого есть здесь: 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-ю вкладку
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует