我有一个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按钮。正弦的内容是动态的,我使用提出的解决方案...
经过许多小时,我终于弄明白了。问题本质上是新Twitter网站的高度动态内容。提交推文后,Tweet
按钮确实被删除并再次添加。在需要进行认真的更改时: