location.href と location.assign(url)
現在の表示しているページを URL に紐付いたページに移動したい場合。
location.href プロパティに URL 文字列を代入すればOKです。
ちなみに location オブジェクトに直接 URL 文字列を代入しても同じ結果になります。
ただ、location.assign メソッドを使うと全く同じことができます。
(function(undefined) { // 以下全て同じ結果 location.href = 'http://d.hatena.ne.jp/Kokudori/'; location = 'http://d.hatena.ne.jp/Kokudori/'; location.assign('http://d.hatena.ne.jp/Kokudori/'); }).apply(this);
さて、この中で圧倒的に有名な手法は location.href です。
しかし、ページ移動は動作を意味するのでプロパティ代入でなくメソッド呼び出しが適当です。
location.assign メソッドは W3C 標準で IE4.0 より実装されてるみたいです。
(参考 http://www.red.oit-net.jp/tatsuya/java/reference/location.htm)
何故 location.href が多く使われてるんでしょうか。
歴史的な背景でもあるんですかね。
ちなみに「パーフェクトJavaScript」でも同じ挙動になると書かれています。
assign() メソッドを実行すると表示しているページを別のページに移動します。
これは href プロパティに値をセットするのと同じ挙動になります。「パーフェクトJavaScript」 P243

パーフェクトJavaScript (PERFECT SERIES 4)
- 作者: 井上誠一郎,土江拓郎,浜辺将太
- 出版社/メーカー: 技術評論社
- 発売日: 2011/09/23
- メディア: 大型本
- 購入: 24人 クリック: 588回
- この商品を含むブログ (12件) を見る
しかし W3C には assign メソッドについてこんな事が‥。
Need description for assign.
ただ 手元の Chrome21 では assign メソッドと href プロパティ代入に差が無いように思います。(適当)
というわけで location.href でなく location.assign() メソッドを使いましょう。