2012年5月13日日曜日

Firefox12にしたらGreasemonkeyでsetTimeoutが動きにくくなった

なんか、Firefox12にしたあたりからGreasemonekeyのsetTimeout関数の挙動が怪しい・・・
軽くググってみたら、そういう症状が出てる人がちらほらいるみたい

挙動としてはタイマーの値を1000以下にすると動くことが多いんだが、確実じゃない感じ
4000とかにするともう動かない・・・

とりあえずの対策としては
setTimeout -> unsafeWindow.setTimeout と置換してやれば動くっぽい
なんでだろうな、なにかやらかしちゃったのか?

3 件のコメント:

jugger さんのコメント...

私と全く同じ問題を抱えている人が居て安心しました。
twitterにて「setTimeout」で検索かけてツイートから飛んできました^^;

ただ少し挙動に関して違うのは、私の場合は殆ど1秒ごと(1000)で動かしていたのですが、最初の数回だけ実行されて止まります。
setTimeoutを使っているのが1箇所でない為、もしかすると現在実行中のタスク?みたいなものの限界が小さくなってしまったのかな・・なんて思ってました。謎ですねw

何はともあれ、私の場合はsetIntervalで代用するとえq動いたので良かったです。
一応、報告まで。

たくと さんのコメント...

自分も setTimeout が動かなくなったので困っていたのですが、Greasemonkey 0.9.19 の問題かもしれません。

とりあえず手動で 0.9.20 をインストールして回避しました。
早く自動更新対応してほしいなー。

Greasemonkey 0.9.20 Release
http://www.greasespot.net/2012/05/greasemonkey-0920-release.html
「A change in 0.9.19 broke setTimeout() for a variety of cases, that has been reverted.」

Chishow さんのコメント...

情報有り難うございます。
早くバージョンアップ等で修正されるといいですね