情報を取り出すためのJavaScriptの説明 (1)
Modified: 26 Dec 1997
functionの定義
登録情報を取り出す手続きは以下のfunctionを使うのが実用的です。
(関数はNetscapeのサイトからダウンロードしたドキュメントを引用しています。)<script language="javascript">
function getCookie(Name) {
var serach = Name + "="
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += serach.length
end = document.cookie.indexOf(";",offset)
if (end == -1)
end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
}
}
</script>
function getCookie(Name)
とりだす名前を指定します。たとえば、登録方法の説明でつかったtomoを指定します。
var serach = Name + "="
serachという変数を確保し、取り出す名前の後に、=をくっつけた文字列を代入します。serachには、"tomo="が入ります。
if(document.cookie.length > 0)
cookie情報の長さを見ています。0より大きいということは、何らかの情報があるという意味です。
0の場合、情報がないという意味ですからなにもせずに終了します。
offset = document.cookie.indexOf(search)
名前に=をくっつけた"tomo="で、cookie情報を、indexOfで検索します。みつかったらその文字列の先頭位置(0,1,2,...)が返ってきます。
見つからない場合、-1が返ってきます。
if (offset != -1)
-1か返って来た場合、情報はあるが、目的の情報がないという意味ですからそのまま終了します。
0か0以上の値が返ってきたら目的の情報が見つかったという意味ですから、取り出しを開始します。
offset += serach.length
取り出すもとの文字列は、tomo=http%3A//www.lint.or.jp/%7Etomo;ですから、tomo=のtの位置がoffset返ってきます。実際の情報は、5文字あとからですから、serachに入っている文字数、つまり5を加えています。これにより、offsetは、=の次のhを差していることになります。
取り出す先頭位置が決まりました。
end = document.cookie.indexOf(";",offset)
indexOfで、";"の位置を捜しています。つまり、取り出す最後の位置を捜したのです。
if (end == -1)
最後の場合、";"が付いていないことがありますので、-1が返ってきた場合はendの位置として
end = document.cookie.length
文字列全体の長さ、つまり最後の文字位置を設定しています。
以上で、取り出す最後の位置が決まりました。
return unescape(document.cookie.substring(offset, end))
substring関数に取り出す先頭位置(offset)と、終了位置(end)を指定して呼びだします。
すると、目的の文字列(http%3A//www.lint.or.jp/%7Etomo)が返って来ます
unescape関数でもとのコード(http://www.lint.or.jp/~tomo)に変換して、リターンします。