マウスコンピューター/G-Tune
2010年で第二世代携帯がサービス終了。ソフトバンクに乗り換えて安くなった人が7割以上います!

location

locationオブジェクトは、そのウィンドウの現在のURL自体を指します。
URLの構成は一般的に
プロトコル(規則) + ホストネーム(ホスト+ポート) + パス
という形になっています。
これらのそれぞれの各部分がプロパティとしてあり
取出したり書き換えたりする事ができます。
また、全体を書き換える事も可能です。

プロパティ



プロトコル(規則) + ホストネーム(ホスト+ポート) + パス + (# or ?)
プロパティはこれらの全体と各部分です。
ほとんど [R/W] (読み書き可能) なのでその部分だけ変更を加える事ができます。
locationオブジェクトでは値を変えて書き込むと、ジャンプします。
これを使えばメソッドを使わなくてもURLの移動ができます。

location.href[R/W] URL全体
location.href は そのドキュメントが表示されているウィンドウのURLです。
http://www.artemis.ac/index.html の様な フルURLを読み出せます。

hrefプロパティは 書き込みも可能なので
location.href = "ジャンプ先URL"; とするとジャンプできます。
JavaScriptで最も一般的に使われている、ページジャンプの方法です。

location オブジェクトは それ自体がURL全体を指していますので
href を省いてしまっても、問題なく動作するようです。
とりあえず、私のブラウザ(IE4,IE6,IE7,NN3,NN4.5,NN6,FF2)では問題なく動作します。
変数(url) に URLを代入
var url = location.href;
var url = location;
URLのジャンプ(移動)
location.href = "";
location = "";

location.protocol[R/W] プロトコル部分
プロトコル部分です。
一般的なページでは http: と言う値が返りますね。
この protocolも R/W(読み書き可能)ですので、書き換える事もできます。
一般的に書きかえる状況はないとおもますが、書き換える場合は
location.protocol = "ftp:";のようにすると
それ以下のURLは変わらず、プロトコル部分のみ変えた場所へジャンプします。

location.host[R/W] ホスト名部分
location の ホスト名部分です。
www.artemis.ac の様なサーバーを示す 文字列だけを取出せます。
これも R/W(読み書き可能)ですので、書き換える事もできます。

location.port[R/W] ポート部分
ポート部分は普段省略されているそうです。( www.artemis.ac:80 の :80の部分)
省略されている時は何も取出せません。
これも R/W(読み書き可能)ですので、書き換える事もできるようです。

location.hostname[R/W] ホスト名+ポート
ポートが省略されている場合は、host と同じ値になります。
私は普段ホストネームはこれで取出しています。
これも R/W(読み書き可能)ですので、書き換える事もできます。

location.pathname[R/W] パス部分
ホストより後ろのパス部分です。
一般的なアドレスだと /~artemis/index.html の様な値になりますね。
ページ内リンク(#NAME) や CGI等での ?引数 の様な呼出しをされた場合は
その部分まで含めて パス部分となります。
/~artemis/cgi-bin/bbs/bbs.cgi?NAME="Lime" 等
これも R/W (読み書き可能)ですので、書き換える事もできます。
パス部分のみの書換えでページジャンプなどができます。

私は、個別フレームのページを フレームを通さないで表示すると
結構重傷なエラーが出る場合等に使っていました。
例えばこのページをページだけ単体で表示するとエラーが出る場合
ビジターの為を考えて
if(top.location.pathname != "/frame.html")
{top.locationpathname = "/frame.html";}

右のページを表示すると、URLは
http://www.artemis.ac/mozilla3/javascript/window/wlocation.htm
となりトップのパスが frame.htmlではなくなります。
この時にトップフレームを frame.htmlへジャンプさせていたわけです。

location.hash[R/W] #名前 の部分
hash は ページ内リンクなどの<A NAME="">にジャンプする時に使う
パスの中の最後の部分 #top などの部分です。
これも R/W(読み書き可能)ですので、書き換える事もできます。
読取り書換えの方が使う場合が多いと思います。
location.hash = "TOP";
の様にジャンプ先の アンカーネームを指定します。
取出しの時は#TOP のように#も付いてくるのですが
書換えの時は#を付けないでいいようです。
付けても付けなくても動作するようですが、付けてしまうと
Netscapeでは##TOPの様に2重になって ロケーションバーに表示されてしまい
その後に取出すと ##TOP のように hashの値も 2重になっていました。

location.search[R/W] ?○○ の部分
サーチ部分はよく Yahoo等で見ると思いますが CGIへ文字列を渡す時などに
? に続けて付け加えて渡します。
ですから、CGI以外ではあまり使われ無いと思われやすいですが
便利に使う事もできます。
例えば自分のページで、複数のページからあるページを呼び出す時など
そこから呼び出すリンクに ?値 のように付け加えておきます。
そうすると ?値 によって、どこから呼び出されたかを
呼び出されたページのJavaScriptで判断し利用できる事になります。
また、ある値をクッキーなどを使わずに別ページへ持ち越す時などに
使えると思います。

テストの結果では、書き込みをする時には?を付ける必要があるようです。
IEではどちらでも自動で補ってくれますが、Netscapeでは?がつきません。
例:index.html と言うページで入室時間をサーチとして付け足します。
location.search = "20:10:10";
結果(IE) index.html?20:10:10;
結果(NN) index.html20:10:10;
この様にNetscapeでは?が付きませんので index.html20:10:10 と言う
ファイルをサーバー上に探しますので、FileNotFound になります。
location.search = "?20:10:10"; とすれば両方できちんと動作します。

この様にNetscapeでは hashとsearchの時に 自動で補う補わないがあります
気を付けて使ってください。

その他には INPUTタグで TYPE="image" の場合
例:<INPUT TYPE="image" NAME="IGS" SRC="">
TYPE="image"は 画像のクリックされたポジションを ファイル名の後に
?IGS.x=25&IGS.y=33 のように値を付けてサーバーに送信されます
html拡張子がCGIとして動作しない様にしてあれば
この値を末尾に付けてリロードされるだけになります。
そこでJavaScriptでこれを利用する事ができるわけです。
IGSが名前ですのでどの画像がクリックされたのか、
xとy でどのポジションがクリックされたのかを取出せます。
一般的にはクリッカブルマップタグでやれば良い事ですが
この様にも利用できると言う事です。

通常 CGIに ? を付けて引数を渡す時にはエンコードが必要になります。
しかし、JavaScriptで利用する為に使う場合はその必要はありません。
JavaScriptはローカルで動作するので、サーチ部分を付け足し
それを受け取る作業は全てローカルマシン内で行われます。
ですから、実際にサーバーへ送信されて受け取るわけではないので
問題なく、日本語なども使えるはずです。
しかしながらページ・ブラウザの文字コードセットの問題で
化けた文字として扱われてしまう場合にどうなるかわからないので
日本語を ?に付けて渡すのは辞めた方が無難です。
どうしても日本語をサーチに付けたい場合は ユニコード化するなどして
渡した方がよいでしょう。

メソッド



location.reload()リロードさせる
現在のlocation をリロードします。
Mozilla/3未満では動作しないとの事で、対応できるブラウザを
リロードさせる時にのみ使えばいいと思います。
location.reload()が呼び出された時点で ページをリロードします。

location.replace()置換える
location.replace("URL")は ジャンプと言うよりは
URLのページと置換えてしまいます。
ジャンプの場合は普通に履歴(history)に残りますが、
置換えは 置換え前のページが history に記録されません。
私は状況によってこれを使っています。
通常はMozilla/3未満の事まで考えると
プロパティの書換えでのジャンプで十分だと思います

location.assign()
あまり意味がわからないのですが、
location.assign("URL") で URLへジャンプします。
つまり、通常の location= "URL"や location.href="URL" と同じ事です。
Netscapeではメソッドとしての解説が無かったのですが動作しました。

通常のJavaScriptでは Object = "";と言う使い方はできないと思いましたが
Objectにassign()を定義しておくとObject= "値"; と記述した時に、
自動的にObject.assign("値") と解釈されると言うのをどこかで見た覚えが・・。
location は location = ""; できちんと動作します。
assignは 割り当てるとかの意味でしょうから、
assignは 実際に使う物ではなく定義されていると言う
程度の物なのでしょうか? だからNetscapeではわざわざメソッドとして
解説されてないのかもしれないと勝手に解釈してしまいました。(゜ー゜;)
信用しないでください。とにかく 普通にジャンプできます。

Tips & Samples



◆わざわざ書く事ではないかもしれませんが。
locationは そのウィンドウの locationです。
ですからフレーム構成の場合に全体をジャンプさせたい時は
きちんと、top.locationの様にどのウィンドウオブジェクトかを
はっきりさせないといけません。
HTMLタグのアンカーは TARGET属性で行いますが
JavaScriptではTARGETをオブジェクトとして指定するわけです。

◆ サンプル1 or.jp → ne.jp
<SCRIPT LANGUAGE="JavaScript">
//簡易版(問題無く動くと思います)
if(location.hostname != "www2.raidway.ne.jp"){
location.hostname = "www2.raidway.ne.jp";
}
//一般版
if(location.hostname = != "www2.raidway.ne.jp"){
location.href = "http://www2.raidway.ne.jp/~artemis/";
}
</SCRIPT>
少し前の時期、プロバイダーが or.jp から ne.jp へと変わった所が
多いと思います。以降期間中は両方使えるようになっています。
このスクリプトを書いておくと、ne.jp以外で来た人を
自動的に同じURLアドレスの ne.jp へジャンプさせます。
ブックマークされる時に、正しい(新)アドレスでされる様にとの配慮です。
or.jpでもne.jpでも同じファイルが表示されますので
METAタグでのrefreshが使えませんのでこうします。
簡易版は、必要なホスト部分のみ交換です。
一般版は、フルパスで、きちんと指定する場合です。

◆ サンプル2 一方通行
historyオブジェクトの所でサンプルにした、戻れない迷路分岐を作る時に
Mozilla/3レベル以上のブラウザを対象にする時に replaceを使って見ます。
<SCRIPT LANGUAGE="JavaScript">
function Jump(n){
if(n == 0){location.replace("YESジャンプ先")}
else{ location.replace("NOジャンプ先")}
}
</SCRIPT>
<A HREF="JavaScript:Jump(0)">YES</A>
<A HREF="JavaScript:Jump(1)">NO</A>
これでアンカーをクリックすると、それぞれのページへ置換えをします。
履歴に残らないので戻る事ができません。

◆ サンプル3 CGI補助用 特殊な ref の取り方
CGIの補助の話になります。
SSIが禁止されているサーバーでは、一般的にCGIを使ってアクセス解析します。
アクセス解析には、ブラウザや時間、回数、等がありますが
リンクで来た場合に、どこから来たか?(以下Ref)を取る事もできます。
さて、そのページがCGI処理ページ(index.cgi等)であればSSI禁止でも REFは取れます。
しかし、CGIをリンクしてもらう表紙にする事はあまりしないようですし、
CGIが使えるディレクトリが決まっている場合も表紙として使う事はできません。

この場合はJavaScriptのImageオブジェクトをJavaScript内だけで使って、 そのSRCとしてCGIを指定します。 CGI側から戻り値がなくても、実際に表示する画像ではないので問題ありません。
<script type="text/javascript">
var img = new Image();
img.src = './cgi-bin/access.cgi?' + document.referrer;
</script>
これでaccess.cgiにrefが渡されますので、後はCGIの方でAgentやIPなどを取って一緒に処理すればOKです。 これは直接location.searchとは関係なくdocument.referrer の部類です。



◆ あなたのブラウザ &このページでの location プロパティ
NN4.5では x、y、target,textなどがあるようですね。


案ずるより産むが易し
使ってみれば疑問も解決

XREA+ (plus) 200円/月
( お試し7日間 )

CORE SERVER 416円/月
( お試し15日間 )

ロリポップ 263円/月
( お試し期間10日間 )

チカッパ 500円/月
( お試し期間15日間 )

ヘテムル 1500円/月
( お試し期間15日間 )

さくら 125円/月
( お試し期間2週間 )

無駄な高額ドメイン管理料金払ってませんか?

バリュードメイン
ムームードメイン

膨大な数の命令をサンプルとあわせて解説。機能別にすぐ引けます!Web2.0を支えるJavaScriptを詳細解説。AjaxやDOM Scriptingで必要となる、DOM/XML/通信の解説を大幅強化。Internet Explorer、Firefox、Safariなど、最新ブラウザに対応。サンプルスクリプトがダウンロードできます。
命令/関数/オブジェクト/真偽/計算/演算・変換/数値/配列/文字列/正規表現〔ほか〕 JavaScript
ポケット
リファレンス
改訂第4版
JavaScriptの文法からAmazon Webサービス・Googleマップまでこの1冊だけでキホンから実践まで、Ajaxのすべてがやさしく学べます。
1 JavaScriptの基本(イントロダクション/変数と計算/条件分岐、繰り返し、関数/オブジェクト)/2 ブラウザーとHTMLの操作(ブラウザーの操作/DOM)/3 JavaScriptによるAjaxの実践(Ajax)/付録 基礎Ajax

JavaScript
言語解説部分とリファレンス部分に分け、その言語解説部分をまとめたもの。第5版では、全章の内容を更新し、XMLHTTPRequestオブジェクトでスクリプトからHTTPリクエストに送信する方法、JavaScriptを使ってXMLデータの制御、またJavaScriptによるグラフィックの制御機能についてなど、新しい話題を追加した。
JavaScriptの概要/第1部 コアJavaScript(字句構造/データ型と値/変数/式と演算子 ほか)/第2部 クライアントサイドJavaScript(Webブラウザに組み込まれたJavaScript/ブラウザウィンドウの制御/ドキュメントの制御/CSSとダイナミックHTML ほか) JavaScript第5版
JavaScriptを、基礎から学習できます。プログラミングの初歩から、オブジェクトやイベントまで、わかりやすく系統的に解説したプログラミングの入門書です。学習項目ごとに、例題や練習問題が用意されているので、習得のチェックをすることができます。この1冊で「基本言語仕様」「オブジェクト」「DOM」「イベント処理」など、JavaScriptの基本がしっかり身につきます。
JavaScriptの概要/JavaScriptの基本言語仕様/オブジェクト/DOM(Document Object Model)/イベント処理/各種処理/JavaScriptの今後/練習問題、章末問題の解答 基礎から学べるJavaScript標準コースウェア
本書は、JavaScriptのリファレンスについて、コアJavaScriptとクライアントサイドJavaScriptに分けて解説しています。コアJavaScriptリファレンスでは、JavaScript1.5とECMAScriptバージョン3によって定義されたすべてのクラス、オブジェクト、コンストラクタ、メソッド、関数、プロパティ、定数について解説します。クライアントサイドJavaScriptのリファレンスでは、レガシーなブラウザ対応のAPI、DOMレベル2の標準的なAPIを扱うほか、XMLHTTPRequestオブジェクトやcanvasタグのような新しい情報もカバーします。
1章 コアJavaScriptリファレンス(Arguments/Array/Boolean/Dateほか)/2章 クライアントサイドJavaScriptリファレンス(Anchor/Applet/Attr/Canvas ほか) JavaScriptクイックリファレンス
136本定番サンプルを掲載。ナビゲーション画面から手軽に動作確認。すぐに引ける便利なプロパティ・メソッドのリファレンス。74項目も併せて掲載。Webコンテンツ制作者、必携。
第1章 DOMの概要/第2章 HTML文書の内容を操ろう/第3章 イベント/第4章 フォーム/第5章 スタイルシート/第6章 Ajax+DOM/第7章 オブジェクト指向でいこう/付録 JavaScript,Ajax,DOMによるWebアプリケーションスーパーサンプル
いまや星の数ほどあるWebページ。そのなかであなたのWebサイトがひときわ注目を集めるためには、ユーザーをうならせるテクニック、あっと驚かせるワザが必要です。本書では、意外と気づ付かないHTMLのTipsから、CSS(スタイルシート)を使った効果的なデザインの方法など、あなたの思い通りにWebサイトをグレードアップする裏技を、すぐに使えるサンプルソース付きで豊富な解説。さらに、JavaScriptを活用したインタラクティブなページの作り方や、CGIで各種情報を取得する便利なテクニックなども多数紹介しています。 図解
誰にも教えたくないWeb制作秘密のテクニック200
本書は、ホームページを一味違ったものにするために欠かせない裏ワザ(TIPS&TRICKS)を集大成したものである。
HTML&CSS編(色と装飾/画像/フィルター/マウスオーバー ほか)/JavaScript/ダイナミックHTML編(スクリプト/DOMとダイナミックHTML/IE最新ワザ/XML) HTML/JavaScript/CSSホームページ裏ワザ大辞典
スーパーカリスマアフィリエイター伊藤哲哉氏とSEOの達人鈴木将司氏が贈るアフィリエイトの秘伝書がここに極まる!著者や監修者が長年蓄積した、確実に稼げるアフィリエイターになるためのステップを一からみっちり解説。また、本当に稼げるテーマを選ぶコツやノウハウも満載。
アフィリエイトの基本/CTPMの法則:アフィリエイトの大原則/アフィリエイターで失敗する人、成功する人/アフィリエイトで稼ぐための4つのポイント/アフィリエイターを取り巻く環境の変化/アフィリエイトで稼げる分野を見極める/アフィリエイトで成功するキーワード選定方法/魅力あるコンテンツ作り/SEO対策とアクセスアップ/データ分析を極める(アクセス解析&ASPデータ解析)/収益をあげる細かいスパイス/アフィリエイト実践編
アフィリエイトの達人養成講座
カスケードスタイルシートとダイナミックHTMLは、より軽く、より刺激的なサイトを構築するための機能を満載しています。本書は、WEBコンテンツ作成のプロフェッショナルのために、CSSとDHTMLについて、実践的な架空サイトの構築例を使って詳細に解説します。 WebプロフェッショナルのためのCSSとDHTML

2010年で第二世代携帯がサービス終了。ソフトバンクに乗り換えて安くなった人が7割以上います!