Любой способ добавить наблюдателя в начало очереди, используя Элемент # Наблюдение? - PullRequest
0 голосов
/ 07 мая 2010

Это может быть невозможно, но прежде чем переписать часть своего приложения, я хотел спросить ...

У меня есть приложение JavaScript, которое создает отправку <input> и наблюдает за событием click этого ввода, используя функцию Element # наблюдающего в Prototype. Для нескольких конкретных страниц на одном конкретном сайте, который использует это приложение, мне нужно применить некоторую дополнительную бизнес-логику перед кодом, который обычно выполняется при нажатии кнопки.

Можно ли как-нибудь использовать Elemen # наблюдаем, чтобы добавить свой новый обработчик событий до существующего обработчика событий, чтобы я мог остановить событие, если эти новые условия не выполнены? Если нет, я, вероятно, решу этот «правильный» путь, заставив приложение запускать определенное событие beforeTakingAction и добавив прослушиватель для того, что предотвращает выполнение приложением своего действия, но это сложнее, чем требует эта простая проблема, требуется переписать часть общего приложения только для одного пользователя ...

1 Ответ

0 голосов
/ 07 мая 2010

Первый способ, который я могу придумать, - это отменить привязку событий, а затем добавить все новые события:

Итак, если ваш элемент:

<input type="submit" value="Go!" id="mySubmit" />

Может быть, вы сначала отмените существующий обработчик?

$('mySubmit').stopObserving('click');

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

Event.observe('mySubmit', 'click', function(){
  // new logic here
  // old logic next
);

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


Другой, более хитрый способ сделать это может быть:

  • Скрыть существующую кнопку
  • Добавить новую кнопку с уникальным идентификатором сразу после другой кнопки
  • к этой кнопке прикреплена новая бизнес-логика
  • эта кнопка запускает событие нажатия для скрытой теперь кнопки

Вы получаете новый функционал, старый функционал и отправляете форму. В теории.


UPDATE

Еще одна вещь, на которую следует обратить внимание, это то, что может наблюдаться также событие submit - если к этому событию также прикреплен материал (скажем, для проверки), то с этим тоже нужно будет разобраться.

...