情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Tampermonkey:GM_setValue/GM_getValue が使えなかった理由

Tampermonkey (1)

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」を使用する必要があるようでした。覚えておきます。

コメント(0)

新しいコメントを投稿