Есть кнопка (ну и соотв. пункт меню), у которой есть параметр

Выделить код

Код:

oncommand = goDoCommand('cmd_function')

Так как на команду cmd_function могут ссылаться несколько кнопок/пунктов меню, то желательно исправить саму команду, а не перебирать судорожно кнопки :) Можно ли это как-то сделать, т.е. чтобы вместо cmd_function выполнялось, для примера, что-то типа:

Выделить код

Код:

alert('alert'); cmd_function();

Можно ли это как-то сделать, т.е. чтобы вместо cmd_function выполнялось, для примера, что-то типа:

Telepat mode on ... no extra data available ... telepat mode off

Можно.

Выделить код

Код:

window. eval
(
	goDoCommand. toString (). replace (/\{/, "{if(command=='cmd_function')alert('alert');")
)

Anton
Спс, попробуем :) О результатах отпишемся :)

Anton
Только добрался до разборки :)

Выделить код

Код:

window.eval
(
    goDoCommand.toString().replace(/\{/, "{ if (command =='cmd_function') alert('alert');")
)

А как же функция cmd_function? Она в таком случае все равно сработает?

Добавлено Втр 27 Мар 2007 23:51:09 :
А куда повесить этот window.eval? Расширениями-то я немного занимался, но в том и проблема, что только немного. :)

Вся картинка: в tb есть кнопочка "получить почту", на ней команда висит goDoCommand('cmd_getNewMessages'). Надо добавить перед/после goDoCommand(...) еще команду :)

А как же функция cmd_function? Она в таком случае все равно сработает?

Сработает.

А куда повесить этот window.eval?

Куда угодно, лишь бы eval выполнился и подменил начало функции goDoCommand. Какой конкректно *.xul должен быть перекрыт оверлеем с нужным <script в tb я не знаю (вернее, лень копать). Да, и ещё нужна проверка, чтобы eval отработал только один раз.
Как вариант, можно переопределить функцию MsgGetMessage или сделать свой контроллер аналогично тому, как это делается в файлах messageWindow.js или mail3PaneWindowCommands.js и вставить его в top.controllers перед дефолтными контроллерами.

в tb есть кнопочка "получить почту", на ней команда висит goDoCommand('cmd_getNewMessages'). Надо добавить перед/после goDoCommand(...) еще команду

С этого и надо было начинать. Перекрой оверлеем нужную кнопку и сделай ей атрибут

Выделить код

Код:

command="before_action;goDoCommand('cmd_getNewMessages');after_command;"

Anton

С этого и надо было начинать. Перекрой оверлеем нужную кнопку и сделай ей атрибут

Я же говорю - оверлеем можно было бы кнопку перекрыть, но ведь та же команда может висеть и на каком-нибудь пункте меню :) Или не так? :)

Я же говорю...

Где, когда, кому ?

Anton
Пост №1 :tongue2:

Так как на команду cmd_function могут ссылаться несколько кнопок/пунктов меню, то желательно исправить саму команду

Пост №1 tongue2

Не, не то

Как передать команду по цепочке контроллеров я не знаю, к сожалению. А eval и переопределение MsgGetMessage будет не очень правильным в расширении.