manabuQiita
@manabuQiita (mnb)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

MacOSで別タブが1つしか開かない

解決したいこと

Wordpress内のとあるページのフォームをクリックするとWordpress内の別固定ページを複数開きたいです。

発生している問題・エラー

MacOSで1アクション(ボタン押下)で複数タブを開きたいが1つしか開かない。
WindowsではChrome、FireFox、IEともに複数タブが開く。
MacOSではChrome、Safariではタブが1つしかひらかない。(FireFoxとIEは試していません)

Wordpress内のとあるページのフォームをクリックするとWordpress内の別固定ページを複数開きたいです。
また別ページには情報を渡したいため、フォーム内の情報をhiddenで渡し、それを受け取る処理をfunction.phpで記載し、form内の値を受け渡ししています。値は渡せています。

該当するソースコード

<form>
  <input type="button" name="submit" id="wp-submit" value="送信する" onclick="mydoSubmit()"/>
</form>
<form name="form1" id="form1" action="https://xxxx/?page_id=10001" method="post" accept-charset="utf-8" target="_form1">
  <input name="Username1" id="Username1" value="" class="" type="hidden"/>
  <input name="Usermail" id="Usermail" value="" class=" required" required="required" type="hidden"/>
</form>
<form name="form2" id="form2" action="https://xxxx/?page_id=10002" method="post" accept-charset="utf-8" target="_form2">
  <input name="Username1" id="Username1" value="" class="" type="hidden"/>
  <input name="Usermail" id="Usermail" value="" class=" required" required="required" type="hidden"/>
</form>

let frm1 = document.getElementById("form1");
frm1.elements["Username1"].value = frm.elements["user_login"].value;
frm1.elements["Usermail"].value = frm.elements["user_email"].value;
frm1.submit();

let frm2 = document.getElementById("form2");
frm2.elements["Username1"].value = frm.elements["user_login"].value;
frm2.elements["Usermail"].value = frm.elements["user_email"].value;
frm2.submit();

自分で試したこと

・iFrame内にフォームをコピーしてそこからsubmitさせたり、Ajaxの非同期処理でsubmitしてみました、同様の結果でした。

ブラウザ毎に挙動が異なるのであればブラウザ間の仕様差異と分かりますが、
Macだけでできない理由が分からないです。Macの仕様なのでしょうか?
当方Windowsしかないため、Macで細かいデバッグができておらず恐縮ですが、アドバイス頂ければ幸いです。

よろしくお願いします。

0

2Answer

こちら、Ajaxを使って複数fom Submitしてみても同様でした。(Windowsは複数タブ開く、Macは1つしか開かない)

一つ、JavaScriptで実装していた時と異なった点は、環境が検証環境と本番環境と二つあり、検証環境だとMacでも複数タブ開いたのですが、本番環境だと1つしか開かない点です。検証と本番はレンタルサーバー業者が異なります。

恐らく詳細な情報がないと分からないと思いますが、こういう事象にあたったことがあるからいらっしゃいましたら、調査ポイントだけでも教えて頂けると助かります。

0Like

ポップアップブロックされているのではないでしょうか。
ポップアップブロックの詳細な仕様はしらないので、推測混じりですが。

一般的なポップアップブロックは、ユーザーの操作とは関係なく別ウインドウを開くのをブロックしますが、ユーザーがクリックした直後には別ウインドウが開けます。

それとは別に1回のクリックで大量の画面が表示されるのも、悪意のある行動と判断されブロックされる可能性があります(1回クリックしただけで、画面が何十枚も開かれたら嫌ですよね)。
今回のケースでは、1回のクリックに対して2つのウインドウ(タブ)を開こうとしているので、1つ目のウインドウは許可されたけど、2つ目のウインドウはブロックされた、ということではないかと思います。

手元で Windows10 + Chrome でポップアップブロックをオフにすると2画面とも開きますが、ポップアップブロックをオンにすると1画面目しか開かず、ポップアップブロックされた旨の警告メッセージが表示されます。
(ちなみに safariはポップアップブロックしても警告を出さないとどこかで読んだような気がします)

また、もう一つ気になるのは掲示していただいたソースで、2つとも id="form1" になっているのは、質問時の誤記なのか、元のソースもそうなっているのかが気になります。2つ目は当然 id="form2" ですよね(多分、質問時の誤記だとは思いますが、念のため。コピーして動かそうとしたら動かなかったので)。

0Like

Comments

  1. @manabuQiita

    Questioner

    ご回答頂きありがとうございます。

    > また、もう一つ気になるのは掲示していただいたソースで、2つとも id="form1" になっているのは、質問時の誤記なのか、
    すいません、ご指摘の通り、誤記です。form2が正しいため修正致しました。

    >それとは別に1回のクリックで大量の画面が表示されるのも、悪意のある行動と判断されブロックされる可能性があります(1回クリックしただけで、画面が何十枚も開かれたら嫌ですよね)。

    はい、それは認識しておりますが、今回どうしても1クリックで複数リクエストを飛ばしたいので。。

    >今回のケースでは、1回のクリックに対して2つのウインドウ(タブ)を開こうとしているので、1つ目のウインドウは許可されたけど、2つ目のウインドウはブロックされた、ということではないかと思います。

    Macが手に入ったため、ChromeとSafariのセキュリティ設定で該当サイトのポップアップを許可するにしても新規タブは1つしか開きませんでした。これは仕様なのでしょうか。もしくはこういうことをしたい場合、何かよい方法はないでしょうか。
  2. 同じMacであってもマシンによってできる場合もあるということであれば、何かの設定を変えれば何とかなるように思います。

    残念ながら、私にはポップアップブロック以外では思いつきませんが。

    (バージョンによって、禁止されたとか、許可されたという可能性もありますが)
  3. @manabuQiita

    Questioner

    承知いたしました。いろいろ試してみます。
    ご回答いただきありがとうございます!

Your answer might help someone💌