POST送信を別ウインド(タブ)で行いたかったので、
以下のようにしました。
<form action="test.php" name="form1" method="post" target="tar1" onsubmit="window.open('','tar1')">
<input type="hidden" name="test" value="abcdefg">
</form>
<a href="" onclick="document.form1.submit();return false">POST送信</a>
右クリック、マウスホイールクリックした場合に、
IE8の場合は新ウインドが開き、FireFoxの場合は新タブで開くようになりました。
この挙動の差については特に問題ありません。
(現在の画面と別画面で行えればいいので)
問題は、リンクを右クリックしての「新しいタブで開く」「新しいウインドで開く」を選んだ場合です。
この場合では、「<a href="" 」の部分をリンクとして認識してしまうようで、
同じページが表示されてしまいます。
かといって、href="test.php"としておいてもPOSTデータが無しになってしまいます。
POST送信を別ウインドで行わせたい場合に、以下操作を満たせるやり方はありますでしょうか。
・リンクを右クリック、マウスホイールクリック
・リンクを右クリックしての「新しいタブで開く」「新しいウインドで開く」選択
No.3ベストアンサー
- 回答日時:
No1、No2です。
>ようするに普通のリンクに対する操作感でユーザーに使ってもらい
>たいんです
通常はホイールクリックではリンクしないと思うので、すでに普通のリンクとは違う動作になっていませんか?
それは置いておいて…
それならいっそのこと、リンク側で制御しようと思わないで、開いた側で制御すればよいのではないでしょうか?
手元にIE6しかないので、それで確認した範囲だと…
リンクタグにターゲット指定をしておいて、
1)左クリックでリンクした場合
2)右クリックの「新しいウインドウで開く」で開いた場合
のどちらの場合も、javascriptで親ウィンドウの情報を取得できましたので、開いた側で元のformの内容を取得して、自分のフォーム(hidden)にセットして遷移しなおせば、お望みのことができるのではないでしょうか?
(少しだけ余計にロード時間がかかりますが)
ただし、2)の情報取得が、各ブラウザでみな同じように可能かどうかのテストまではしていません。
(通常リンクは問題ないと思いますが、右クリックの場合はよくわかりません)
No.4
- 回答日時:
> ・リンクを左クリック、マウスホイールクリック
> ・リンクを右クリックしての「新しいタブで開く」「新しいウインドで開く」選択時
>
> ようするに普通のリンクに対する操作感でユーザーに使ってもらいたいんです。
希望されている動作はブラウザ側のものなので、JavaScriptから操作できません。
そもそもここまで操作できたらセキュリティ上の脆弱性のように感じます。ユーザが期待していない動作をJavaScriptで出来てしまいますから。
また、リンクを開く操作はブラウザの設定を変更することで変更できます。
質問文にあるスクリプトではどのような操作をしても新しいタブを開く処理になりますが、ユーザがそれを望まない場合があることは考慮されているでしょうか?
一番スマートなのはPHP側でGETパラメータを拾うように修正してしまうことだと思います。
具体的には以下の2通りです。
- test.php でPOSTパラメータを拾う処理をGETパラメータを拾う処理に変更する
- GETパラメータを拾い、test.php にPOSTするゲートウェイを用意する
> じゃぁ20件表示してるページからPOSTで詳細情報含め送るしかないと考えてます。
ということですが、今JavaScriptでPOSTしている処理をPHPで肩代わりすれば実現できると思うのですが、どうでしょう?
No.2
- 回答日時:
No1です。
>やはり実現は難しいのでしょうかね・・。
No1は、実現方法を書いたつもりでしたけど…??
1)なら以下が参考になるかと
(クロスブラウザ対応がどこまで出来ているかは確認していません)
http://www5e.biglobe.ne.jp/~access_r/hp/javascri …
http://www.red.oit-net.jp/tatsuya/java/event.htm
http://phpspot.org/blog/archives/2007/02/javascr …
http://javascript.eweb-design.com/0901_rc.html
(検索すれば、他にも沢山見つかるはずです)
2)はデータが一定では無いのと、getでは無理とのことなので、使えなさそう。
3)はphpの修正が可能なのかどうか不明ですが、
例えば、「詳細情報」が無い場合は、別ウインドウのサイズを小さくして
(しなくてもいいけど)、「右クリックでは、正しい情報が送れません」などと
表示しておいて、数秒後にウインドウを閉じてしまう。(アラート的に使う)
みたいにしておけば元の状態に戻るので、左クリックをしてもらえる。
4)なら、リンクではなくなるので、左クリックのみでリンクするようになる。
よくわかってないけど、↑のどれかでいけませんか?
javascript非対応の場合の対処方法は、思いつきませんが…
この回答への補足
今気づきましたが、
質問文の「右クリック」は「左クリック」の間違いです。。
実現したいことはこういうことですね。
・リンクを左クリック、マウスホイールクリック
・リンクを右クリックしての「新しいタブで開く」「新しいウインドで開く」選択時
ようするに普通のリンクに対する操作感でユーザーに使ってもらいたいんです。
連続でアドバイスありがとうございます。
>>やはり実現は難しいのでしょうかね・・。
>No1は、実現方法を書いたつもりでしたけど…??
妥協という意味ではなく本当の意味で解決策があるのかなぁって思ったことです。
1)右クリック押下の判定はできますが、
そこから更に「新しいウインド(タブ)を開く」を選んだという判定はできないと思います。
2)データが一定ではないので無理ですね。
3)これこそ妥協案だと思います。
実現できないのであればおっしゃるような対応をしておくべきと考えてます。
4)これも妥協案ですよね。
左クリックのみにしか対応させないというのも検討してみます。
No.1
- 回答日時:
1)右クリックでも同じように動作させるなら
oncontextmenuやイベント処理などで右クリックを取得して、同様の処理
(submit())をしてあげる。
2)POSTのデータが決まっているのなら
href="test.php?test=abcdefg"を設定しておいて、php側でgetでデータを
取る(決まっているデータなら、送る必要ないけど…)
3)あくまでPOSTなら
<a>タグはhref="test.php"としておいて、php側でデータが無い場合は
右クリックと判断して、その時用のページを返す。
例えば「右クリックしちゃいゃ~~ん!」
(またはデフォルトのページを決めておけばよい)
4)右クリックでのリンクが効かなくてよいのなら
トリガーをリンクタグでない他の要素にすれば、リンクの機能がなくなる
ので、右クリックではリンクしなくなる。
ところで、hiddenのデータがないとページが見られないとするなら、スクリプトが動作しない(させていない)ユーザは門前払いってことでいいのかな?
全体像が不明ですが、わざわざまわりくどいことをして、ユーザビリティを落とすようなことにならないように…
(単純なリンクだけでいけそうな気がするけど)
アドバイスありがとうございます。
やはり実現は難しいのでしょうかね・・。
ちなみに、hiddenで送信するものは、GETで送れないサイズなんです。
それで仕方なくPOSTにすることにしてます。
全体像の概略は、
とあるwebAPIから商品情報を取得して20件ずつ表示してます。
このページから商品個別のページへ遷移させたいのです。
一番の理想は、商品個別ページへは商品IDだけをGETで送り、
個別ページで改めてwebAPIから商品IDから情報取得→表示でした。
ただ、商品IDのようなユニークな項目が無いため、
それはできませんでした。
じゃぁ20件表示してるページからPOSTで詳細情報含め送るしかないと考えてます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- その他(Microsoft Office) EXCELでバーコードを作成すると白くなってコードが見えません 1 2022/04/04 14:24
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ブラウザーの戻るボタンを押し...
-
画面のどこかをクリックすると
-
Webサイト内に埋め込んだmp4動...
-
excel VBA でjava のボタンを押...
-
スマホでボタンがhoverの状態か...
-
Googleフォームの回答リンクに...
-
リロードした時にページの一番...
-
グーグルに被リンクが反映され...
-
yahooで1位。googleで圏外。助...
-
サーチコンソールで被リンクを...
-
SEOに被リンクは全く必要が...
-
個人hp 外部ページへのリンク...
-
戻るボタンの作成
-
webサイトを簡単に作成する方法...
-
「戻る」を押しても戻らないweb...
-
「全面リニューアル」の意味
-
webサイト制作、デザイン作成の...
-
静止画画像をクリックすると音...
-
ワードで一度出来てしまった余...
-
wmv埋め込みでコントロールパネ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Webサイト内に埋め込んだmp4動...
-
SEOに被リンクは全く必要が...
-
スマホでボタンがhoverの状態か...
-
個人hp 外部ページへのリンク...
-
サーチコンソールで被リンクを...
-
excel VBA でjava のボタンを押...
-
ホームページ制作で教えてくだ...
-
画面のどこかをクリックすると
-
HTMLのリンクの色をクリックす...
-
iFrame内の変数を、親フレーム...
-
Googleフォームの回答リンクに...
-
WEBページのジャンプ。素早く行...
-
jquery loadでページを読み込...
-
サイト構築の方法を教えてください
-
ブラウザーの戻るボタンを押し...
-
リロードした時にページの一番...
-
ページ内リンククリックでアコ...
-
『工事中』の素材
-
戻るボタンの作成
-
リンク先を新しいタブで開けな...
おすすめ情報