>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >как поменять значения горячих клавиш в расширении? http://forum.mozilla-russia.org/viewtopic.php?id=29928 |
ilagnev > 17-01-2009 16:36:31 |
есть у меня в оверлее такая ветка: Выделить код Код:<keyset id="mainKeyset"> <key id="ila_hotkeys" modifiers="alt any control" key="K" oncommand="ila_hotkey_fs();" /> <key id="ila_hotkey" modifiers="alt any control" key="L" oncommand="ila_hotkey_f();" /> </keyset> я в функции ila_hotkey_fs() делаю следующее: После этого я ожидаю, что вызов функции ila_hotkey_f() поменяется на ctrl+alt+P, но этого не происходит. Атрибут меняется, это я проверял при помощи алерта в самой функции ila_hotkey_f(). Как мне поменять кнопки, по котороым будет происходить вызов функции? |
Forest > 17-01-2009 17:50:07 |
Можно посмотреть как это сделано в keyconfig-е. |
Infocatcher > 17-01-2009 18:05:31 |
ilagnev пишет К сожалению, такие штуки срабатывают только в момент загрузки окна. |
ilagnev > 17-01-2009 18:39:58 |
Infocatcher пишет
а как это скажется на производительности? |
Infocatcher > 17-01-2009 19:09:12 |
ilagnev пишет
Ну, производительность снизится, но не думаю, что сильно. ilagnev пишет
Тот, что уже есть, «регистрирует» сочетания клавиш где-то в районе загрузки окна. Выделить код Код:function myLoadHandler(e) { window.removeEventListener(e.type, arguments.callee, false); document.getElementById("myKey").setAttribute("key", "P"); } window.addEventListener("load", myLoadHandler, false); В большинстве случаев этого достаточно – изменения вступают в силу только в новых окнах. Уже упомянутый keyconfig, скорее всего, делает именно это. Разве что, по идее, можно убедить встроенный обработчик «перечитать» сочетания клавиш, но только если в нем это предусмотрено (у меня есть подозрение, что работает это на уровне интерпретации XUL , впрочем, я этим как-то не интересовался). P.S. Еще можно посмотреть, как сделано в Custom Buttons. |
ilagnev > 17-01-2009 19:42:12 |
Infocatcher пишет
спасибо за помощь. ещё по случаю хочю спросить, я для хранения настроек в одном расширении подсмотрел вот такую конструкцию: Выделить код Код:var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); ... pref.setCharPref('hotkey','P'); ... var hotk=pref.getCharPref('hotkey'); храню так настройки. |
Forest > 17-01-2009 19:54:38 |
ilagnev пишет
В принципе может быть достаточно открыть новое окно, но мб это так только в девелоперском режиме настройки Лиса?.. |
Anton > 17-01-2009 20:22:29 |
ilagnev
Боюсь, что никто не заметит. ---- |
Infocatcher > 17-01-2009 22:54:58 |
ilagnev пишет
Ну, это самое простое встроенное средство – все, что так сохранено, можно увидеть в about:config или в файле prefs.js в профиле. Только если нужны не только ASCII-символы, смотрите, как сделано в chrome://global/content/nsUserSettings.js P.S. Кстати вот относительно недавно в одном расширении обнаружил такую штуку: Выделить код Код:navigator.preference("perName", prefValue); var pVal = navigator.preference("perName"); Покрутил и убедился, что в Firefox 1.5+ работает. |