スポンサーリンク
Chromeの拡張機能Tampermonkey(FirefoxのGreasemonkeyに相当)向けにJavaScriptを書いていて、GM_setValueとGM_getValueを使い、データの保存と取得を行いたかったのですが、どういうわけか利用できませんでした。その時のことを書いておきます。
スポンサーリンク
GM_setValue / GM_getValue
GM_setValueなどのGM_*関数は、Greasemonkey互換の関数で、Tampermonkeyでも用意されています。
参考:Tampermonkey - the most popular userscript manager for Blink-based browsers
使おうとするとエラーになる
しかし、実際にGM_setValueを呼び出そうとすると、次のエラーになります。
ERROR: Execution of script 'xxx' failed! GM_setValue is not defined
ReferenceError: GM_setValue is not defined
また、GM_setValue/getValueに依存する、GM_SuperValueを利用しようとすると、次のエラーが出力されます。
This library requires Greasemonkey! GM_setValue is missing.
This library requires Greasemonkey! GM_getValue is missing.
そのため、利用できません。
原因と対策
この問題について調べていてもなかなか情報が見当たりませんでした。
しかし、GM_setValueを利用しているコード中で、次の記述を見つけました。
// @grant GM_setValue
// @grant GM_getValue
これを、TampermonkeyのUserScript冒頭にある「// ==UserScript== ~ // ==/UserScript==」に追加することで、エラーが出なくなりました。
まとめ
GM_*系関数を使用するためには、「@grant」を使用する必要があるようでした。覚えておきます。
スポンサーリンク
スポンサーリンク