[ INDEX ]
Status scroll/ステータスのスクロール(JavaScript)
ネットスケープとかエクスプローラなんかで、リンク先にカーソルをあてるとブラウザのステータスバー(左下にあるリンク先とかをナビゲートするアレね)に、説明を表示してくれるホームページがあるけど、長文なんかだと後ろの部分が読めなくて困るわけ。そんなわけでこのスクリプトでこれを解決する。

1.指定された文字列をステータスバーにスクロールさせるスクリプト。

※スクリプトの追加が必要です。<BODY>タグが始まる前のどこかに追加してください。

<script LANGUAGE="JavaScript">
<!--

//  Copyright (C) 2000 code by saitou, japan.
//    http://www02.so-net.ne.jp/~saitou/ [japanese portal site]
//    http://www04.u-page.so-net.ne.jp/ta2/saitou/ie401/ [wellknown my heraldic site, this scirpt is written for this page]
//    this code can be reused or midified, if credit and midified point are given in the code.

//  * STATUS SCROLLING *

    var        scrlen    = 50; // scrolling, when greater than this length.
    var        cycle   = 150; // best fit value(in mili-second) is 100 for single byte character, and 150 for multi byte characters.
    var        before    = Math.ceil( 3000 / cycle); // waiting time for before scrolling(in mili-second), best fit value is 3000(about3Sec).
    var        after    = Math.ceil(10000 / cycle); // waiting time for after scrolling(in mili-second), best fit value is 10000(about10Sec).

    var        msg        = "";
    var        hint    = "";
    var        time    = 0;
    var        mode    = 0;

    function fx_scroll(argv)
    {
        msg = argv;

        hint = msg;
        if (hint.length==0)
        {
            time = 0;
            mode = 0;
            window.status = hint;
        }
        else
        if (hint.length>scrlen)
        {
            time = 0;
            mode = 1;
            fx_timeout(time);
        }
        else
        {
            time = 0;
            mode = 2;
            fx_timeonce(time);
        }
    }

    function fx_timeout(argv)
    {
        if (mode!=1) return;
        if (argv!=time) return;

        time++;
        if (time>before)
            hint = hint.substring(1, hint.length);
        window.status = hint;
        if (hint=="")
        {
            hint = msg;
            time = 0;
            mode = 2;
            window.setTimeout("fx_timeonce(" + time + ")", 1000);
            return;
        }

        window.setTimeout("fx_timeout(" + time + ")", cycle);
    }

    function fx_timeonce(argv)
    {
        if (mode!=2) return;
        if (argv!=time) return;

        time++;
        if (time>after) hint = "";
        window.status = hint;
        if (hint=="")
        {
            mode = 0;
            return;
        }

        window.setTimeout("fx_timeonce(" + time + ")", cycle);
    }
// -->
</script>

fx_scroll関数の仕様

fx_scroll関数は、ブラウザのステータスバーに指定された文字列を表示します。
文字列が50文字以下の場合は10秒間表示した後ステータスバーから文字列を消去します。
文字列が50文字を超える場合、3秒間文字列を表示した後1文字ずつスクロールします。最後までスクロールするともう一度冒頭の文字列を10秒間表示してからステータスバーから文字列を消去します。スクロールの途中にfx_scroll関数の呼び出しがあった場合、それまでの処理をキャンセルし新たな要求を処理します。
2.マウスポインタがリンク文字上に乗ったらステータスバーに文字を表示するスクリプト。

<A HREF="リンク先" onMouseOver="fx_scroll('文字列'); return true;" onMouseOut="fx_scroll(''); return true;">リンク先名</A>

onMouseOut="fx_scroll('');」の部分はマウスポインタがリンク文字列から外れた場合にスクロールを中断させる指定です。用途によっては使用しないほうが良い場合もあると思います。

※参考(一般的に知られた「マウスポインタがリンク文字上に乗ったらステータスバーに文字を表示するスクリプト」は以下の通りです)。

<A HREF="リンク先" onMouseover="status='文字列'; return true;" onMouseOut="status=''; return true;">リンク先名</A>

onMouseOut="status=''; return true;"」の部分はマウスポインタがリンク文字列から外れた場合に文字列を消去させる指定です。

3.使用例

スケールアップすればこんなことも可能。ちなみに文字列をJavaアプレット(データベース代わりに使用)に持たせていて、Java - Javaアプレット間のデータ転送機能を利用しています。

http://www04.u-page.so-net.ne.jp/ta2/saitou/ie401/Jpsynop.htm

4.著作権表示

スクリプト内にあるクレジットさえ残してもらえれば、転載・変更・再配布は自由です。

2000/7/20
[ INDEX ]