JavaScript click事件监听器仅触发一次

问题描述 投票:0回答:1

我有一个Chrome扩展程序,可以在发布Twitter消息之前对其进行拦截和检查。为此,我将一个事件侦听器添加到Tweet按钮。正弦的内容是动态的,我用solution proposed in this thread

initialize : function() {
    let that = this;
    let jsInitChecktimer = setInterval(checkForJsFinished, 111);
    function checkForJsFinished () {
        if (document.querySelector("div[data-testid='tweetButtonInline']")) {          
            clearInterval (jsInitChecktimer);
            console.log("Button found");
            that.addSubmitNewTweetClickHandler();
        }
    }
},

addSubmitNewTweetClickHandler : function() {
    let that = this;
    let buttonSubmitTweet = document.querySelector("div[data-testid='tweetButtonInline']");
    buttonSubmitTweet.addEventListener('click', function(e) {
        console.log("CLICK");
        // Stop default event from happening
        e.preventDefault();
        e.stopImmediatePropagation();
        // Do stuff
    });
},

如果该推文顺利通过检查,则通过使用.trigger('click')以编程方式触发事件来提交。

这很好,但是只有一次。提交并发布推文后,Tweet按钮上的事件侦听器不见了,我无法拦截下一条推文进行检查。我尝试过再次提交后调用initialize() -也许按钮被删除并重新添加到DOM中(提交tweet时它实际上会消失)–但是querySelector立即找到了按钮。但是,即使再次调用initialize(),也不会触发Tweet按钮的点击。

这里可能是什么问题?我的问题是我什至不知道在哪里寻找以及如何调试它。

我有一个Chrome扩展程序,可以在发布Twitter消息之前对其进行拦截和检查。为此,我将一个事件侦听器添加到Tweet按钮。正弦的内容是动态的,我使用提出的解决方案...

javascript jquery twitter addeventlistener
1个回答
0
投票

经过许多小时,我终于弄明白了。问题本质上是新Twitter网站的高度动态内容。提交推文后,Tweet按钮确实被删除并再次添加。在需要进行认真的更改时:

© www.soinside.com 2019 - 2024. All rights reserved.