リンクを新しいウィンドウで開く

| コメント(2) | トラックバック(0)

とある事情で今までGETで遷移してた画面をPOSTに変更した。
しかし、色々なQueryパラメータのパターンがあり、クリックされたリンクによって、パラメータの値を変えなければいけないなど、普通にPOSTには変えられない。
そこで、formの内容をJavaScriptで自動生成しsubmitするようにした。テストもたくさんやった。大丈夫!…のはずが、「リンクを新しいウィンドウで開く」の登場です。
つまり、今見ている画面はそのままに、別ウィンドウや別タブでリンクのページを開く事ができなくなっていたのです。普通にhrefにjavascript:hogehoge…と書いていたので、別ウィンドウではそんなJavaScriptの関数はもちろん存在せず、恥ずかしながらページが見つかりません、なのです。

まず最初はGETをPOSTに置き換えてSubmitするだけのページを間に挟む実装に変えてみた。一見うまくいった様に見えたが、普通の遷移で「戻る」「進む」ボタンが使えなくなっている事に気づく。考えてみたら当たり前だ。戻っても強制的に進まされるのだから。
しかしこの方法しか思いつかず、セッションにトークン情報を持って、location.back()やforward()を場合分けして呼んでみたりして、強引に制御してみた。
結果は、こちらを立てれば、あちらが立たず。というか感触として本質的ではない気がした。違和感がありすぎる。しかしなかなか諦めきれずに、あぁでもない、こうでもないと何時間も考え込んだ末、ギブアップ。

周りの人たちに「こりゃダメだ」「できない」と愚痴をこぼし始めたそのとき、神が降りてきました。

まず別ウィンドウで開きたい人にはPOSTは諦める。それでは、強引にPOST化した時の目的は達せられないのだが、ほとんどの人は同じウィンドウで移動していることだろう。そして諦めたことによって、AタグのhrefにGETのURLを、onclickにPOSTのJavaScriptコードを書いてはどうだと閃いたのです。つまり、

<a href="nextpage?a=b&c=d" onclick="nextpage(a=b&c=d);return false;">リンク</a>

こういう事です。上々でした。



トラックバック(0)

トラックバックURL: http://www.iwazer.com/mt/mt-tb.cgi/60

コメント(2)

なるほど。
こんなことできるのか。

はい。ただ、JavaScriptで強制的にPOSTするのも考え物だなと思いました。

コメントする

このブログ記事について

このページは、iwazerが2007年4月10日 01:23に書いたブログ記事です。

ひとつ前のブログ記事は「JavaScript」です。

次のブログ記事は「自動更新と再起動」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。