xrea-banner xreaad

Hello, GM_world!

namespace kilrey; / JavaScript / 応用 / Hello, GM_world!

前のページ(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の仕様変更の際に変わったものと思われます。 どちらにせよこのスクリプトは役に立ちません。

前のページ(Hello, first script!)へ / 次のページ(Hello, cookie!)へ