プログラマがプログラムを覚える時の定番であるHello worldを取り扱ったGreaseMonkeyのユーザースクリプトを紹介します。
サンプルコードは下記の通りです。
↓ここから
// ==UserScript==
// @name Hello World
// @namespace http://www.4web8.com
// @description Hello world program
// @include *
// @exclude http://www.google.*
// ==/UserScript==
alert('Hello world');
↑ここまで
これをテキストファイルなどで作成し、helloworld.user.jsとして保存。
そして<a href="http://www.4web8.com/install">インストール方法</a>で紹介した方法でユーザースクリプトをインストールします。
これでどこかサイトを訪れると、必ず
Hello world
のJavaScriptアラートが出るようになります。
なおヘッダ部の@excludeにhttp://www.google.*を記述したので、
Googleのサイトでのみこのメッセージは出ません。合わせて確認してください。
このように、GreaseMonkeyはヘッダ部と単純なJavaScriptコードで成り立っています。
なお技術情報として、これだけ単純なコードですが実際には自動的に無名関数にくるまれて実行されます。通常はこの事を気にする必要はありませんが、自分のプログラムコード次第では後で気をつける必要があるかもしれませんので、覚えておくと酔いかもしれません。
また、GreaseMonkey用ユーザースクリプトで宣言した変数や関数は、他のスクリプトでは使えません。具体的にはwindow.setTimeoutを使って利用したり、リンクの文字列を値に取る属性onclickをセットしてJavaScriptに自分で定義した関数を評価させたりすることは出来ません。
例えば次のようなプログラムは動作しません。
function helloworld() {
alert('Hello World!');
}
window.setTimeout("helloworld",60);
これは、タイムアウトしてhelloworld()への呼び出しが評価される時にはhelloworld関数がすでに存在していないからです。
もし後でユーザースクリプトの変数や関数を参照する必要があるなら、それらをwindowオブジェクトの属性として明示的に定義する必要があります。
window.helloworld = function() {
alert('Hello World!');
}
window.setTimeout("hellworld()",60);
※このソースコードはあくまで具体的な動きを示すための例です。
実際にはwindowの属性を設定するのは理想的では無いので、書き方としては
window.setTimeout(function() { alert('Hello World!'); }, 60 );
が良いでしょう。