在JavaScript中向计算器添加计时器

我在管理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...
}

如果你需要使用单独的计时器跟踪多个事件,你显然必须使它更复杂,可能有一些闭包或一系列事件或其他东西.

点赞