質問の多い物や、ふと発見した物など、細かい説明はしませんが使用法/実用例などを参考程度に記載します。

JavaScript


サイト内検索

JavaScript 小技集

質問の多い物や、ふと発見した物など、
細かい説明はしませんが使用法/実用例などを参考程度に記載します。

指定URL以外からのアクセスを拒否する

使用オブジェクトdocument.location = URL
使用プロパティwindow.document.referrer
使用メソッドstring.indexOf(key)

<script>
/* 正規のリンク元URL又はURLの一部(アカウントだけでも可)を記述 */
check = "http://www.xxx.xx/xxxxx/";

/* 正規のリンク元からのアクセスではなかった場合に飛ばすURL */
url = "http://www.xxx.xx/xxxxx/";

/* リンク元のURLを取得 */
ref = top.document.referrer;

/* refにcheckで指定した文字列が含まれているかチェック */
if (ref.indexOf(check) < 0)
   document.location = url;
</script>

リンクをクリックした時にアニメGIFの動きを止めない方法
JavaScriptを起動させる為に、

<a href="javascript:alert('びろ〜ん')">AAAAA</a>

と記述するのは正式な方法なのですが、
Internet Explorer のバージョン5.0以降で、この方法で記述したリンクをクリックすると
表示しているアニメGIFの動きが止まってしまいます。

これは、リンクをクリック=別のページを開く(新しい情報を読み込む)
それならば現在のページで行っている処理は止めてもいいだろう…という、
それはそれで間違ってはいないけれどそれだけにしか対応していない一種のバグです。
ま、個人的な解釈ですが…。

new Image()を使って画像データをキャッシュに読み込んで動的に画像変換しようとしても、
別ウィンドウを開いて外部ファイルを読み込んだりすると、
勝手にキャッシュがクリアされてしまい、スムーズに画像変換できず、
改めてサーバーから画像のDLを始めてみたり、
(こんなの無駄にサーバー負荷を増やしてるだけですよね…)
IE4 では問題無かったのにIE5.0以降でのJavaScript絡みの画像の扱いに関しては、
なにかと問題があります。

とはいえ、文句ばかり言ってても仕方ないので、なにか対策をしなければいけません。
テストページを開いて下さい。

はじめのリンクのソースは、

<a href="javascript:alert('びろ〜ん')">ここをクリック</a>

正式な記述法ですが、後のリンクのソースは、

<a href="" onClick="alert('びろ〜ん');return false">
ここをクリック</a>

こんな感じです。

来訪者のブラウザによって違う処理をする
使用オブジェクトnavigator
使用プロパティappCodeName
appName
appVersion
userAgent

navigator オブジェクトを使うと、来訪者のブラウザ情報が取得できます。
基本的には、その情報を元に判断して異なる処理内容を指定してやれば可能です。

それぞれのプロパティで、どんな情報が取得できるかを自分のブラウザで試して下さい。

document.navi.inf.value = navigator.

これを利用して色々な処理を工夫します。
いくつかの例を下に記載します。

<script>
/* ブラウザによって別のページへ転送 */
if (navigator.appName == "Microsoft Internet Explorer")
   document.location = "msie.html";
if (navigator.appName == "Netscape")
   document.location = "netscape.html";

/* ブラウザのバージョンが4以上なら実行 */
if (navigator.appVersion.substring(0,1) >= 4)
   alert("いらっしゃいませ!");
else
   alert("このページは残念ながらお使いのブラウザでは表示されません");

/* IEとNetscape6~とNetscape6未満でフォーム長を調整する */
if (navigator.userAgent.match(/msie|gecko/i))
   document.write("<input type=text size=60>");
else document.write("<input type=text size=40>");
</script>


suepon.com | CGI作成・CGI制作 | ドメイン検索 | バナー自動作成 | Google Dance jp | 松浦亜弥 (H.P.memo) | パソコン | ネイル

Copyright (C) 1999-2008 suepon, All rights reserved.