Мне бы для 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)
Отсутствует
Ну тогда так...
Тремя клавишами - первые две - вперёд-назад, а третья включает отслеживание просматриваемых вкладок.
Вперёд:
Назад:
И основной модуль:
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ентов на части порвет !!!
Отсутствует
P.S. после изучения настроек tmp 0.2.5.2
Мне бы для TMP нужно...
А чем ctrl+tab/ctrl+shift+tab в tmp не устраивает ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
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)
Отсутствует
Anton
...необходимость ручного пуска немного угнетает...
Тут ничего не поделаешь средствами одного лишь keyconfig.
...И ещё хотел осведомиться, не будет ли этот скрипт со временем потреблять кучу памяти или вызывать утечки.
Вызывать утечки не должен, я предусмотрел удаление из истории при закрытии имеющейся там вкладки. Что касается потребляемой памяти, это зависит от количества вкладок в истории. Примерно 19 (38?) байт на вкладку.
...Если TMP выставить на "историческое" переключение и перемапить на нужную комбинацию, а на Ctrl(+Shift)+Tab повесить обычное переключение, то это и будет решение с минимальными усилиями. Вот только проблема в том, что сочетание с Ctrl+Tab в KeyConfig не отображается.
Ctrl+Tab можно назначить в keyconfig - выбираем запрещённую для изменения комбинацию (Ctrl+D, например), жмём кнопку "Add new key...", пишем код, назначаем комбинацию Ctrl+Tab. Проблема не в этом. Проблема в том, что работать она будет всё равно по-старому.
Может "закатать" скрипт в расширеньице ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
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)
Отсутствует
...
...Других вариантов, похоже, не осталось.
Есть вообще-то. Родной код 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ентов на части порвет !!!
Отсутствует
Вперёд:
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ентов на части порвет !!!
Отсутствует
Назад:
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ентов на части порвет !!!
Отсутствует
Расширение: 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ентов на части порвет !!!
Отсутствует
Спасибо, то, что нужно!
Без бага и ошибки я софт 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)
Отсутствует
Спасибо за ответы. Особенно Dimanish'у.
Отсутствует
Спасибо за ответы. Особенно Dimanish'у.
Эге, Ice_sCream остался без ответа ?
Закрыть все вкладки, кроме текущей
Сойдёт ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Ice_sCream
Как я написал на первой странице сего топика:
Что тоже самое, что
Закрыть все вкладки, кроме текущей
Тут должна была быть подпись. А, да... Вот она и есть.
Отсутствует
Возможно ли на команду расширения WikiCode (аналог BBcode для Wiki) назначить горячую клавишу, чтобы она работала только в поле ввода текста wiki? Нужно по Ctrl+b выделять текст жирным, чтобы не возникал конфликт с командой открытия закладок по этой клавише. Вообще возможно ли указывать в каком месте должно работать сочетание клавиш, скажем только в поле ввода текста? Код для разметки текста жирным с помощью WikiCode: wikicode.notagcode('**','**');
Fx 2.0.0.8
Отсутствует
e-travel, можно. Посмотри сюда: http://forum.mozilla.ru/viewtopic.php?pid=70620#p70620 (определение контекста выполнения).
Что-то вроде
if (event. target. id == "...") wikicode. notagcode ('**', '**'); else toggleSidebar ('viewBookmarksSidebar');
У меня нет прав на писание Wiki, поэтому id я указать не могу.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
У меня нет прав на писание Wiki, поэтому id я указать не могу.
Теперь есть.
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
Anton
У меня нет прав на писание Wiki, поэтому id я указать не могу.
Теперь есть.
:oops:
Дико извиняюсь, но, оказывается, я мог узнать id поля без всяких прав и не утруждая администратора:
if (event. target. id == "wiketext") wikicode. notagcode ('**', '**'); else toggleSidebar ('viewBookmarksSidebar');
Лень было сходить на Wiki и посмотреть - думал, поле ввода может появиться только у тех, кто имеет права.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
Дико извиняюсь, но, оказывается, я мог узнать id поля без всяких прав и не утруждая администратора:
Я переживу потерю пяти секунд времени :-)
Я вообще-то думал у тебя давно права есть.
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
Anton
спасибо, только не: id =="wiketext" а "wikitext" . Посмотрел в DOM Inspector, если написать:
то будет работать и в Wiki и на форуме. Интересно, а почему TEXTAREA нужно писать обязательно большими буквами, маленькими не работает, наверно синтаксис чувствительный к регистру.
=====Добавлено=====
Поменял название статьи в wiki на просто: Настройка горячих клавиш.
Изменил вид самой статьи. Со временем нужно туда обязательно добавить всё то огромное количество советов и подсказок, которыми делился Anton
Отредактировано e-travel (02-02-2006 09:46:26)
Fx 2.0.0.8
Отсутствует
Anton
хотелось бы не писать для каждого конфликтного сочетания клавиш такое:
все равно это будет работать только после отключения комманды которая исспользует такое же сочетание клавиш, в данном случае это команда Bookmarks (открыть меню закладок). Может можно прописать чтото вроде:
Fx 2.0.0.8
Отсутствует
Anton
если в keyconfig можно ссылаться на другие комманды, тогда никаких проблем, нужно было б только написать:
и keyconfig нашел бы в своей базе комманду с таким именем и выполнил ее. Я не знаю умеет ли он это.
Fx 2.0.0.8
Отсутствует
У keyconfig нет никакой базы команд. Расширение отслеживает события клавиатуры и выполняет определенный для заданного сочетания клавиш код javascript.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
подскажи пожалуйста, как на сочетание Ctrl+цифра повесить свою команду? Сейчас хоть keyconfig и не ругается когда указываешь это сочетание, но оно не работает, по прежнему происходит переход на 1..9 вкладку в зависимости от нажатой цифры.
=====Добавлено=====
пытался только что дописать статью по настройке горячих клавиш, вижу: "Заблокировано Anton", значит ты тоже подключился к написанию этого материала . Поздравляю с началом работы в Wiki, хорошо что такой знающий человек сможет писать свои мануалы.
Отредактировано e-travel (04-02-2006 13:41:48)
Fx 2.0.0.8
Отсутствует