如何删除由外部脚本绑定的事件侦听器

时间:2014-05-14 15:16:14

标签: javascript jquery events

我有'黑盒'类型的ASP框架,假设我无法修改它。但我可以添加HTML模块。我使用AJAX制作了HTML模块,用于用户登录和获取数据。问题是我需要拦截登录表单的提交事件。然后它必须调用Web服务,返回令牌并在页面重新加载之前将其存储在cookie中。

首先,我需要停止重新加载页面。所以我需要取消绑定导致重新加载的事件。但是怎么样?我无法访问绑定事件的代码。这不是我的。

我能够附加自己的事件处理程序来提交按钮,登录名和密码字段。他们完成了自己的工作 - 他们启动了AJAX请求,该请求应该执行我的登录过程。好吧,至少他们尝试,因为几乎总是我的AJAX调用在它完成之前被杀死,页面重新加载,并且我的模块没有它应该具有的令牌。大约20个电话中的1个 - 它成功了,所以它看起来很可能。

如果有一种方法可以阻止页面重新加载,直到AJAX回调完成,那么它可能就足够了。

绝对没有办法杀死我在代码中绑定的事件吗?

1 个答案:

答案 0 :(得分:0)

好吧,我找到了实现目标的方法,而没有真正解除任何事件的束缚。 我需要用'#'替换表单操作属性,与特殊提交链接href('#')相同,然后...完成!在我的AJAX调用完成(或失败)之后,它恢复原始的href并提交顽皮的表单。

所以我问的问题是错的 - 我的错。我需要阻止某个表单被提交,这比删除外来事件更容易!

TL; DR - 首先杀死hrefs,然后恢复它们:)