2010-11-06

GreasemonkeyスクリプトでGM_getValueをイベントで使おうとしたら

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Greasemonkeyスクリプトを最近、いじってあそんでいます。
GM_getValueというデータを永続化しておくことができるGreasemonkeyの関数があるのですが、
これをクリックイベントの中で使おうとしたら

Error: Greasemonkey access violation: unsafeWindow cannot call GM_getValue.

とエラーが出てしまいました。

イベントの中で普通にこのように書くとダメなのです。
 var value = "bar";
 GM_setValue("foo", value);

でも、以下のように書くとOKになります。
  var value = "bar";
  setTimeout(function() {
    GM_setValue("foo", value);
  }, 0);
setTimeoutでくくればOKなようです。なぜかはよくわかりません。

ちなみに
http://wiki.greasespot.net/0.7.20080121.0%2B_compatibility
に書いてありました。
コメントを投稿