• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:POST送信を別ウインドで行いたいのですが・・)

POST送信を別ウインドで行う方法

このQ&Aのポイント
  • POST送信を別ウインドで行う方法について詳しく説明します。
  • 右クリックやマウスホイールクリックでPOST送信を別ウインドで行うことができます。
  • リンクを右クリックして新しいタブやウインドで開くことで、POST送信を別ウインドで行うことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

No1、No2です。 >ようするに普通のリンクに対する操作感でユーザーに使ってもらい >たいんです 通常はホイールクリックではリンクしないと思うので、すでに普通のリンクとは違う動作になっていませんか? それは置いておいて… それならいっそのこと、リンク側で制御しようと思わないで、開いた側で制御すればよいのではないでしょうか? 手元にIE6しかないので、それで確認した範囲だと… リンクタグにターゲット指定をしておいて、  1)左クリックでリンクした場合  2)右クリックの「新しいウインドウで開く」で開いた場合 のどちらの場合も、javascriptで親ウィンドウの情報を取得できましたので、開いた側で元のformの内容を取得して、自分のフォーム(hidden)にセットして遷移しなおせば、お望みのことができるのではないでしょうか? (少しだけ余計にロード時間がかかりますが) ただし、2)の情報取得が、各ブラウザでみな同じように可能かどうかのテストまではしていません。 (通常リンクは問題ないと思いますが、右クリックの場合はよくわかりません)

その他の回答 (3)

  • think49
  • ベストアンサー率59% (285/482)
回答No.4

> ・リンクを左クリック、マウスホイールクリック > ・リンクを右クリックしての「新しいタブで開く」「新しいウインドで開く」選択時 > > ようするに普通のリンクに対する操作感でユーザーに使ってもらいたいんです。 希望されている動作はブラウザ側のものなので、JavaScriptから操作できません。 そもそもここまで操作できたらセキュリティ上の脆弱性のように感じます。ユーザが期待していない動作をJavaScriptで出来てしまいますから。 また、リンクを開く操作はブラウザの設定を変更することで変更できます。 質問文にあるスクリプトではどのような操作をしても新しいタブを開く処理になりますが、ユーザがそれを望まない場合があることは考慮されているでしょうか? 一番スマートなのはPHP側でGETパラメータを拾うように修正してしまうことだと思います。 具体的には以下の2通りです。 - test.php でPOSTパラメータを拾う処理をGETパラメータを拾う処理に変更する - GETパラメータを拾い、test.php にPOSTするゲートウェイを用意する > じゃぁ20件表示してるページからPOSTで詳細情報含め送るしかないと考えてます。 ということですが、今JavaScriptでPOSTしている処理をPHPで肩代わりすれば実現できると思うのですが、どうでしょう?

karace
質問者

お礼

javascript必須のサイトということもあり、 左クリックのみ受け付けることで対応しました。 回答ありがとうございます。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

No1です。 >やはり実現は難しいのでしょうかね・・。 No1は、実現方法を書いたつもりでしたけど…?? 1)なら以下が参考になるかと  (クロスブラウザ対応がどこまで出来ているかは確認していません) http://www5e.biglobe.ne.jp/~access_r/hp/javascript/js_026.html http://www.red.oit-net.jp/tatsuya/java/event.htm http://phpspot.org/blog/archives/2007/02/javascriptright.html http://javascript.eweb-design.com/0901_rc.html (検索すれば、他にも沢山見つかるはずです) 2)はデータが一定では無いのと、getでは無理とのことなので、使えなさそう。 3)はphpの修正が可能なのかどうか不明ですが、  例えば、「詳細情報」が無い場合は、別ウインドウのサイズを小さくして  (しなくてもいいけど)、「右クリックでは、正しい情報が送れません」などと  表示しておいて、数秒後にウインドウを閉じてしまう。(アラート的に使う)  みたいにしておけば元の状態に戻るので、左クリックをしてもらえる。 4)なら、リンクではなくなるので、左クリックのみでリンクするようになる。 よくわかってないけど、↑のどれかでいけませんか? javascript非対応の場合の対処方法は、思いつきませんが…

karace
質問者

お礼

連続でアドバイスありがとうございます。 >>やはり実現は難しいのでしょうかね・・。 >No1は、実現方法を書いたつもりでしたけど…?? 妥協という意味ではなく本当の意味で解決策があるのかなぁって思ったことです。 1)右クリック押下の判定はできますが、 そこから更に「新しいウインド(タブ)を開く」を選んだという判定はできないと思います。 2)データが一定ではないので無理ですね。 3)これこそ妥協案だと思います。 実現できないのであればおっしゃるような対応をしておくべきと考えてます。 4)これも妥協案ですよね。 左クリックのみにしか対応させないというのも検討してみます。

karace
質問者

補足

今気づきましたが、 質問文の「右クリック」は「左クリック」の間違いです。。 実現したいことはこういうことですね。 ・リンクを左クリック、マウスホイールクリック ・リンクを右クリックしての「新しいタブで開く」「新しいウインドで開く」選択時 ようするに普通のリンクに対する操作感でユーザーに使ってもらいたいんです。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

1)右クリックでも同じように動作させるなら  oncontextmenuやイベント処理などで右クリックを取得して、同様の処理  (submit())をしてあげる。 2)POSTのデータが決まっているのなら  href="test.php?test=abcdefg"を設定しておいて、php側でgetでデータを  取る(決まっているデータなら、送る必要ないけど…) 3)あくまでPOSTなら  <a>タグはhref="test.php"としておいて、php側でデータが無い場合は  右クリックと判断して、その時用のページを返す。  例えば「右クリックしちゃいゃ~~ん!」  (またはデフォルトのページを決めておけばよい) 4)右クリックでのリンクが効かなくてよいのなら  トリガーをリンクタグでない他の要素にすれば、リンクの機能がなくなる  ので、右クリックではリンクしなくなる。 ところで、hiddenのデータがないとページが見られないとするなら、スクリプトが動作しない(させていない)ユーザは門前払いってことでいいのかな? 全体像が不明ですが、わざわざまわりくどいことをして、ユーザビリティを落とすようなことにならないように… (単純なリンクだけでいけそうな気がするけど)

karace
質問者

お礼

アドバイスありがとうございます。 やはり実現は難しいのでしょうかね・・。 ちなみに、hiddenで送信するものは、GETで送れないサイズなんです。 それで仕方なくPOSTにすることにしてます。 全体像の概略は、 とあるwebAPIから商品情報を取得して20件ずつ表示してます。 このページから商品個別のページへ遷移させたいのです。 一番の理想は、商品個別ページへは商品IDだけをGETで送り、 個別ページで改めてwebAPIから商品IDから情報取得→表示でした。 ただ、商品IDのようなユニークな項目が無いため、 それはできませんでした。 じゃぁ20件表示してるページからPOSTで詳細情報含め送るしかないと考えてます。

専門家に質問してみよう