这可能是不可能的,但在我重写部分应用程序之前,我想问......
我有一个JavaScript应用程序,它创建一个提交<input>
并使用Prototype的Element#observe函数观察输入的click事件。对于使用此应用程序的某个特定网站上的一些特定页面,我需要在单击按钮时正常执行的代码之前应用一些额外的业务逻辑。
有什么方法可以使用Elemen#observe在现有事件处理程序之前添加我的新事件处理程序,所以如果不满足这些新条件,我可以停止事件吗?如果不是,我可能会通过让应用程序触发特定的beforeTakingAction
事件并添加一个阻止应用程序采取行动的侦听器来解决这个问题,但这比这个简单的问题要复杂得多,并且只需要为一个用户重写部分共享应用程序......
答案 0 :(得分:0)
我能想到的第一种方法是取消绑定事件,然后添加所有新事件:
所以如果你的元素是:
<input type="submit" value="Go!" id="mySubmit" />
也许你会先绑定现有的处理程序?
$('mySubmit').stopObserving('click');
然后在那里附加新的逻辑。也许现有的逻辑被封装成可以轻易反弹的方式?
Event.observe('mySubmit', 'click', function(){
// new logic here
// old logic next
);
我有兴趣知道是否有办法将现有事件捕获到可以重新附加的对象中。
另一种狡猾的方式可能是:
您将获得新功能,旧功能并提交表单。从理论上讲。
<强>更新强>
另一件需要注意的事情是,可能还会发现submit
事件 - 如果该事件还附加了某些内容(例如,用于验证),那么也需要处理。