ページを去る人に挨拶する


自分の Web ページを見てくれている人が他のサイトへ去っていこうとするとき(或いはブラウザを閉じるときも同様)、 「また見に来てね」と挨拶することが出来たら楽しいですね。

実は私のサイトの中でも、こうした機能を使っているところがあります。電脳レストハウス「梅ちゃん堂」に以前からアクセスしている方ならご存じでしょうが、 トップページからメニューを選択し、「フレームあり」を選択してメニューにアクセスした場合、 そこから他のサイトに移動しようとするときに「また見に来てね。梅ちゃん堂」というメッセージウィンドウを表示しています。

これは梅ちゃん堂サイトのかなり初期に作った仕掛けで、プログラム的にはかなり簡単なものです。 鍵となるのは、HTMLがアンロードされる時に発生する onUnload というイベントで、これに alert("(メッセージ)") という JavaScript のメソッドを結びつけています。 (onUnload は、普通のHTMLなら BODY タグ、フレーム用のHTMLなら FRAMESET タグに書き加えます。)

問題は、ページがアンロードされたとき、移動先が自分のサイトか否かという点です。他のサイトに行くときに「また見に来てね」と表示するなら格好いいのですが、 自分のサイト内の他のメニューページに移動するたびに「また見に来てね」と表示したのでは、ちょっと白けますね。

実はこの問題は、フレーム付きの Web ページの場合には、さほど問題になりません。あなたの Web サイトが終始同一のフレーム分割で構成されている場合には、 メニュー内を移動してもフレーム自体は変わらないからです。フレームを定義しているHTMLページの FRAMESET タグに onUnload=alert("また見に来てね") と書き入れるだけでいいのです。 この場合、onUnload イベントはこのフレームを去る場合(つまり他のサイトへ行く場合)に発生します。 (実はそれだけでなく、ページを更新(再読込)する場合にも発生するのですが、これは我慢しましょうね。)

ジャンプ先のサイトにフレームがあるかどうかということは、関係ありません。フレームを定義しているHTMLファイルが違うのですから。 私のサイトがフレーム付きバージョンにしか、このメッセージを使用していないのは、このためです。但し、フレーム付きのページからフレームのないトップページに移動する場合には、 当然 onUnload イベントが発生します。また、あなたの Web サイトがフレームだらけであったとしても、ページによって異なるフレーム用HTMLを使用している場合には、 移動時に onUnload イベントが発生します。(例えば或るページは縦割りフレームで、或るページは横割りフレームにしている場合など。)

ではフレームを使用していない Web ページには、この仕掛けは使えないかというと、そんなことはありません。但し、ページがアンロードされるときのジャンプ先が自分のサイト内か、 他のサイトかを判定するために、ちょっと凝ったスクリプトが必要になります。

下のリンクリストをみて下さい。上の2つは梅ちゃん堂内のページです。 下の2つは他の Web サイトです。梅ちゃん堂内のリンクをクリックした場合には、何のメッセージも表示されずに、そのページにジャンプします。他サイトをクリックした場合には、 ジャンプする前にメッセージが表示されます。どちらにジャンプしても必ずこのページに戻ってきて下さい。でないと、この続きがわかりませんから(笑)。

梅ちゃん堂
更新履歴
Yahoo!Japan
Microsoft Japan

まず、HTMLのヘッダー部分で JavaScript を記述します。

<SCRIPT Language="JavaScript">
<!--
check=0;
function Greeting(){
if(check==1) alert("戻って来〜いよ!");
}
//-->
</SCRIPT>

次に BODY タグに onUnload="Greeting()" を書き加えます。つまり、ページのアンロード・イベントに直接 alert() メソッドを結びつけるのではなく、 ヘッダー部で定義した Greeting() 関数を通すことによって、変数 check の値をチェックしているのです。 そして、リンク先のリストのうち、クリックするとメッセージを表示させたいリンク先の A タグの中に onClick="check=1" を書き加えるのです。 例えば

<A HREF="(リンク先URL)" onClick="check=1"> 他のサイト名 </A>

という具合です。

これで、他サイトがクリックした場合にのみ、check 変数に 1 が入り、ページのアンロードでメッセージを表示することが出来るようになります。 この方法では、ページの更新(再読込)ボタンを押してもメッセージが表示される心配はありません。逆に、ブラウザのブックマーク(お気に入り)や履歴、 「戻る」、「進む」ボタンで他のサイトに移動する場合にはメッセージを表示できないという欠点もあります。

もう1つは、これとは反対に自己サイト内をクリックしたら check に 1 を入れ、check が 1 ならメッセージを表示させない、という方法もあります。 この場合には、リンクで自己サイト内をクリックした場合以外は必ずメッセージが表示されることになります。

いずれにせよ、これは JavaScript のプログラムとしては非常にシンプルで、また JavaScript を実行できるブラウザならどのバージョンでもうまく行くという手軽さもあります。




次のトピックは「改行に注意!」です。

目次 | ← 前のトピック | ↑ページのトップ | 次のトピック →

ご意見・ご質問がありましたら「ザ・掲示板」またはメールにて梅ちゃん堂まで