前のページ(Hello, first script!)へ / 次のページ(Hello, cookie!)へ
前段でインストールした 何もしないスクリプトを 雛型として利用します。 まず本文を以下のように書き換えてください。
// ==UserScript==
// @name Test
// @namespace http://kilrey.com/
// @include http://*
// ==/UserScript==
(function(){
alert("Hello, GM_world!");
})();
そしてどこかのページを開きます。 そうすると Hello, GM_world!DOCTYPE と表示されたはずです。 あらゆるページを読み込んだ際に
alert("Hello, GM_world!");
を行っているというわけです。
これでは全く実用的ではありません。 なのでもうちょっと実用的なものを見てみましょう。 SafetyMixiです。
// ==UserScript==
// @name Safety Mixi
// @namespace http://kilrey.com/
// @include https://mixi.jp/*
// ==/UserScript==
(function(){
for(var i = 0; i < document.links.length; i++){
document.links[i].href =
document.links[i].href.replace('http://mixi.jp/',
'https://mixi.jp/');
}
})();
追加情報から説明しましょう。
まずスクリプトの名前と名前空間があります。
次に適用するページの指定があります。
ここでは https のプロトコルで接続した場合を対象としています。
スクリプト本文を見てみましょう。
for(var i = 0; i < document.links.length; i++){
は for ループです。 document.links.length までの範囲で添え字 i を廻します。 document.links はそのドキュメントに含まれるリンクを 全て列挙した配列のプロパティです。
document.links[i].href =
document.links[i].href.replace('http://mixi.jp/',
'https://mixi.jp/');
が中心となる部分です。
各リンクに対してリンク先を http://mixi.jp/ から
https://mixi.jp/ に変換し改めて代入するという操作をしています。
つまり、全体としての動作は、
そのドキュメントに含まれるリンクに対して
リンク先を http://mixi.jp/ から https://mixi.jp/ に変える
ということになるわけです。
しかし、このスクリプトは現在使えません。
何故かというとmixiにhttpsで接続してもhttpに転送されるからです。
作った当初はちゃんと動いていた記憶があるので
2006/12/4の仕様変更の際に変わったものと思われます。
どちらにせよこのスクリプトは役に立ちません。