Hello world!の表示

プログラマがプログラムを覚える時の定番である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 );


が良いでしょう。





コメントをどうぞ