4

我正在使用一个setTimeout,它每次运行时都会调用自己来持续检查不同页面的内容,因为每个页面都是通过 ajax 加载的。似乎 Facebook JS 正在运行所有可能的 setTimeout 引用,并为每次渲染我的应用程序无用调用 clearTimeout。

有没有办法可以防止我的 setTimeout 像 Facebook 的 JS 无助的小错误一样被压扁?

这是我的代码,因此您可以查看正在发生的事情并根据需要测试您的解决方案:

ruleset a60x542 {
  meta {
    name "shun-the-facebook-likes"
    description <<
      shun-the-facebook-likes
    >>
    author "Mike Grace"
    logging off
  }

  dispatch {
    domain "facebook.com"
  }

  rule find_the_likes {
    select when pageview "facebook\.com"
    {
      emit <|

        KOBJ.a60x542.removeLikes = function() {
          $K(".uiUfiLike, .like_link, .cmnt_like_link").remove();

          var timeout = window.setTimeout(function() {
            KOBJ.a60x542.removeLikes();
          }, 4000);
          console.log(timeout);
        } // removeLikes()

        KOBJ.a60x542.removeLikes();
      |>;
    }
  }
}
4

2 回答 2

0

您确定 Facebooks 正在清除您的超时吗?

你的 console.log 工作正常吗?

您可以使用 setInterval 继续执行您的功能。

于 2011-04-18T00:57:42.987 回答
0

试试这个,一个对我有用的解决方案:

function fooBar(){
    // your code goes here
    console.log("see me every second");
    setTimeout(fooBar, 1000);
}

setTimeout(fooBar, 1000);
于 2011-12-03T01:35:31.540 回答