在 AJAX 完成之前,不要让其他处理程序处理

Don't let other handlers handle until AJAX is done

本文关键字:处理 其他 程序 AJAX      更新时间:2023-09-26

所以,我有一个篡改猴子脚本被注入到Twitter中,我想在点击推文按钮时向事件队列的开头添加操作。到目前为止,我的操作已触发,但是return false;e.preventDefault()在向按钮添加单击侦听器或向表单提交侦听器时,没有人阻止表单提交。提交侦听器事件实际上从未被触发,但按钮是触发的。所以,我的问题是,确保:

  • 我的操作首先发生
  • 在我的 ajax 完成之前不会发生其他操作

我似乎无法停止或找到Twitter提交推文的方式。不幸的是,我的操作触发了一个 ajax 调用,并且该 ajax 调用直到提交推文后才会调用其完成的回调。

更新:我也尝试了e.stopImmediatePropogation()无济于事。

这只是一个猜测,也许没有多大帮助,但我认为提交的已经是来自Twitter的链接javascript eventListener/function。不知道这是否是如何处理的问题的一部分。

请参阅(打开浏览器控制台以查看输出):

var myApp = new function() {
    this.init = function() {
        var myForm = document.getElementById('myForm');
        
        //first eventListener
        myForm.addEventListener("submit", function(e){
            e.preventDefault();
            console.log('submit');
        });
        
        //second eventListener
        myForm.addEventListener("submit", function(e){
            e.preventDefault();
            console.log('submit2');
            e.stopPropagation();
            return false;
        });
    }
};
myApp.init();
<form id="myForm">
    <input type="submit" value="click" />
</form>

编辑:我发现了这个,它可能有帮助:如何在调试时或从 JavaScript 代码中查找 DOM 节点上的事件侦听器?