如何移除由外部脚本绑定的事件监听器
How to remove event listeners bound by external script
我有一个'黑盒'类型的ASP框架,假设我不能修改它。但是我可以给它添加HTML模块。我使用AJAX制作了HTML模块,用于用户登录和获取数据。问题是我需要拦截登录表单的提交事件。然后它必须调用web service,返回令牌并在页面重新加载之前将其存储在cookie中。
首先我需要阻止页面重新加载。我需要解绑定导致重载的事件。但如何?我没有权限访问绑定事件的代码。这不是我的。
我能够附加我自己的事件处理程序提交按钮,登录和密码字段。它们完成了自己的工作——它们启动了应该执行登录过程的AJAX请求。好吧,至少它们尝试了一下,因为几乎总是在AJAX调用完成之前就终止了它,页面重新加载,并且我的模块没有到那时应该有的令牌。大约20次调用中有1次成功,所以看起来是可能的。
如果有一种方法可以在AJAX回调完成之前防止页面重新加载,那么它可能已经足够工作了。
是否绝对没有办法杀死我没有绑定在我的代码中的事件?
好吧,我已经找到了实现目标的方法,而无需实际解除任何事件的绑定。我需要用'#'替换表单动作属性,与特殊提交链接href('#')相同,并且…完成了!在我的AJAX调用完成(或失败)之后,它恢复原始的href并提交淘气的表单。
所以我问的问题是错的——是我的错。我需要防止表单被提交,这比删除外星事件更容易!
TL;DR -先杀死hrefs,然后恢复它们:)
相关文章:
- 在offline.js中绑定事件
- 如何在angularjs中检查Kendo树视图数据绑定事件
- 在页面高度更改时绑定事件
- 在页面重新加载后绑定事件,并仅使用Knockout.js、html和js创建新的html元素
- 使用onbeforeunload绑定事件
- 传递类似绑定事件的参数
- 如何对修改后的元素重新绑定事件
- 聚合物模板自动绑定:在模板绑定事件之前的核心选择火灾
- Jquery差异B/w Jquery绑定事件
- SessionStorage绑定事件
- extjs,如何在表单操作中绑定事件
- 模拟 Web 浏览器方向更改事件以使用 Jasmine 测试绑定事件处理程序函数
- 绑定事件发射器上的单个事件
- 如何在绑定事件期间排除元素
- 将鼠标悬停在位于我的页面上的 iframe 上的绑定事件,其中包含包含的 src
- 在 jQuery 中创建 DOM 之前的绑定事件
- 如何在页面加载时在 ajax 调用中绑定事件处理程序后触发事件
- 使用 ajax 加载的页面绑定和取消绑定事件处理程序
- 咖啡脚本构造函数中的绑定事件
- 将数据添加到动态创建的元素和绑定事件