管理者のためのTips


・リンク表示と別の場所に飛ぶ

NN2NG NN3OK NN4OK MozillaOK IE3OK IE4OK

色々な理由で自分のページにフルパスの URL を記述しなければならないことがあります。

例えば以下のような例です。

Java Applet のページへのリンク
サーバの資源に対するアクセスのある Java Applet を使用した場合、 Netscape ブラウザから Firewall 環境から通常のドメイン名を含む URL のページをアクセスするとエラーが発生して正常に動作できません。 この問題を回避するために、ドメイン名の代わりに IP アドレスの URL に変更する場合。

複数のサーバを使用して公開している場合
複数のサーバを使用して一連のコンテンツを公開している場合 ( たとえば他のサーバのアクセスカウンタやバナーなど )、 サーバの異なる部分へのリンクはフルで指定しなければなりません。

このような場合、自分の開発マシン( PCなど )で確認しようとすると 直接外部のサーバにデータを取りに行くことになり確認できません。

以下は、フルパスで表記されているリンクの確認のために、 特定の環境でリンク先を変えることを目的としたコードです。

<script language="JavaScript"><!--
myHostName  ='kiriko';      // 自分のホスト名
myHostIPAddr='127.0.0.1';   // 自分の IPアドレス
// 指定されたホストかどうかを判断する関数
function isMyHost(){
  return (  location.protocol=='file:'
         || location.host    ==myHostName
         || location.host    ==myHostIPAddr);
}
// リンク先を変更する関数
function localLink(u){
  if (isMyHost()){
    location.href=u;
    return false;
  }
  return true;
}
// --></script>

この文字の部分は必要に応じて修正します。

myHostName はチェック対象のホスト名を、
myHostIPAddr は IPアドレスを指定します。


使用方法

一般用には anonymouse.htm で特定のホストのみ hogehoge.htm にする場合、 通常のリンク( Aタグ )なら、以下のように記述します。

<a href="anonymouse.htm"
   onClick="return localLink('hogehoge.htm');">飛び先</a>

一般用が別サーバの場合は anonymouse.htm をフルパスで、 特定のホストの場合が別サーバなら hogehoge.htm をフルパスで記述します。

また、CGI画像のような場合は以下のように記述します。

<script language="JavaScript"><!--
document.write(
  '<img src="'+(isMyHost()?'hogehoge.cgi':'anonmymouse.cgi')+'">'
  );
// --></script><noscript>
<img src="anonymouse.cgi">
</noscript>

上の例では通常は anonymouse.cgi で特定のホストが hogehoge.cgi の場合です。
この例では特にパラメータを記述していませんが、必要なら同様に記述します。 また、JavaScript をオフしている人のために NOSCRIPT タグも合わせて指定しておくと良いでしょう ( トーゼン、自分ではオフしない前提です f^^; )。

リンクのサンプルはこちら


注意事項

caution
このサンプルでは特定のホストは1つだけです。
しかし、中には代表ホスト名で複数のサーバに振る分ける構成のものもあります。

このような場合には isMyHost 関数内で全ての ホスト名 と IPアドレス を 判断する必要があります。

これは結構、効率の悪い方法になりますが、もし、通常見るブラウザが JavaScript1.2 以上をサポートしていれば ホスト名のドメイン部分 と IPアドレスの範囲 を、 正規表現( RegExp )を使用して簡略化することができます ( 必要ならチャレンジしてみてください )。

Netscape Navigator2.x
JavaScript1.0 ではアンカータグの onClick マウスイベントハンドラの帰り値を見ないので、 これを対応するには、多少複雑にする必要があります。
つまり、 LocalLink 関数を URL のフルパス部分( apath )と相対パス( rpath )に分割して、 これを引数とするように変更( LocalLink( aptah, rpath ) )し、 LocalLink の戻り値を URL の文字列を返すようにします。
そして、この関数呼出しを onClick ではなく href の JavaScript として記述します。
また、これだけでは JavaScript が無効の場合にはジャンプできないので、 「CGIイメージの場合」と同様、リンク全体を document.write 関数を使用して出力するとともに、 noscript タグを使用して JavaScript が無効の場合でもジャンプできるようにします。

MS Internet Explorer 3.02Ja
MSIE3.02 は JavaScript1.0 の仕様ですが、リンクタグに対するアクセスができません。 反対に最新版の MSIE3.02 は onClick マウスイベントハンドラの帰り値を判定するようです。

Copyright(c) 1998 - 2001 ShinSoft. All rights reserved.