gpt4 book ai didi

javascript - 在 JavaScript 中向事件监听器添加计时器

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:21:31 24 4
gpt4 key购买 nike

我在管理 Firefox 扩展中的网站负载时遇到了一些麻烦。

我正在使用 JavaScript 并开发一个 Firefox 扩展来搜索我自己的网站列表中的字符串,以查找不当词。问题是我正在一张一张地搜索列表。这意味着,我正在加载一个网页并向 DOMContentLoaded 添加一个事件监听器;当 DOM 加载时调用一个函数来搜索字符串。但是,如果页面未加载(例如网络问题),则永远不会调用该函数。

有没有办法为事件监听器设置计时器?如果事件未在 5 秒内触发,则执行某些操作。或者如果有其他方法可以做到这一点,请指教!我最大限度地减少了代码,但我认为您可以在这里理解这个想法。

function main_(){
//do some stuff here and if needed call to open a new page
waitForDOM();
}

function waitForDOM(){
//if the list of pages is grather than 0 then
//add the new tab here and create the event listener
gBrowser.addEventListener('DOMContentLoaded',pageLoaded,true);
}

function pageLoaded(aEvent) {
//do the search here and calls the function waitForDOM to load a new page and a event listener
waitForDOM();
}

最佳答案

我对编写 Firefox 扩展一无所知,但一般来说,如果您的事件处理程序在特定时间内未被调用,您当然可以设置一个计时器来执行某些操作。像这样:

var eventTriggeredFlag = false;

function waitForDOM(){
gBrowser.addEventListener('DOMContentLoaded',pageLoaded,true);
setTimeout(function(){
if (!eventTriggeredFlag) {
// time's up without the event: do something
}
}, 5000);
}

function pageLoaded(aEvent) {
eventTriggeredFlag = true;
// whatever else you want to do here...
}

如果您需要使用单独的计时器跟踪多个事件,您显然必须使它变得更复杂,可能需要一些闭包或事件数组或其他东西。

关于javascript - 在 JavaScript 中向事件监听器添加计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7003999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com