送信フォームがあり、ユーザーがフォームを送信したときに新しいウィンドウを開いて、分析で追跡できるようにします。
私が使用しているコードは次のとおりです。
<form action="http://URL at mailchimp subscriber URL.com" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" onclick=window.open(google.html,'','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');>
<label for="name">Your Name</label><input type="text" value="" name="FNAME" class="required" id="mce-FNAME">
<br/>
<br/>
<label for="email">Your Email </label><input type="text" value="" name="EMAIL" class="required email" id="mce-EMAIL">
<br/>
<br/>
<input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="submit">
</form>
</div>
Javascriptは必要ありません。フォームタグにtarget="_blank"
属性を追加するだけです。
<form target="_blank" action="http://example.com"
method="post" id="mc-embedded-subscribe-form"
name="mc-embedded-subscribe-form" class="validate"
>
ポップアップウィンドウを使用してデータベースデータのプリントアウトを表示するWebベースのデータベースアプリケーションでは、これはニーズに十分対応できました(Chrome 48でテスト済み):
<form method="post"
target="print_popup"
action="/myFormProcessorInNewWindow.aspx"
onsubmit="window.open('about:blank','print_popup','width=1000,height=800');">
秘Theは、<form>
タグのtarget
属性を、onsubmit
ハンドラーのwindow.open
呼び出しの2番目の引数と一致させることです。
onclick
は、そのアクションをアタッチするのに最適なイベントではない場合があります。誰でもフォームのどこかをクリックすると、ウィンドウが開きます。
<form action="..." ...
onsubmit="window.open('google.html', '_blank', 'scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');return true;">
フォームのtarget
属性と同様の効果を得るには、input[type="submit]"
またはbutton[type="submit"]
のformtarget
属性を使用することもできます。
MDN から:
...この属性は、フォームの送信後に受信した応答を表示する場所を示す名前またはキーワードです。これは、ブラウジングコンテキスト(タブ、ウィンドウ、インラインフレームなど)の名前またはキーワードです。この属性を指定すると、要素のフォーム所有者のターゲット属性が上書きされます。次のキーワードには特別な意味があります。
- _self:現在のコンテキストと同じブラウジングコンテキストに応答をロードします。この値は、属性が指定されていない場合のデフォルトです。
- _blank:応答を名前のない新しいブラウジングコンテキストに読み込みます。
- _parent:現在のコンテキストの親ブラウジングコンテキストに応答を読み込みます。親がない場合、このオプションは_selfと同じように動作します。
- _top:応答をトップレベルのブラウジングコンテキスト(つまり、現在の祖先であり、親を持たないブラウジングコンテキスト)に読み込みます。親がない場合、このオプションは_selfと同じように動作します。
指定したコードを修正する必要があります。フォームタグでは、onClick属性値を二重引用符で囲む必要があります。
"window.open('google.htm','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');"
また、window.open
の最初のパラメーターも引用符で囲む必要があることに注意する必要があります。
通常、小さなjQueryスニペットをグローバルに使用して、外部リンクを新しいタブ/ウィンドウで開きます。私は自分のサイトのフォームにセレクターを追加しましたが、今のところうまく機能しています:
// URL target
$('a[href*="//"]:not([href*="'+ location.hostname +'"]),form[action*="//"]:not([href*="'+ location.hostname +'"]').attr('target','_blank');
このjqueryはうまく機能すると思います。以下のコードを確認してください。
これにより、送信アクションが機能し、アクションURLを再度開くか新しいリンクを開くかを問わず、新しいタブでリンクが開きます。
jQuery('form').on('submit',function(e){
setTimeout(function () { window.open('https://www.google.com','_blank');}, 1000);});})
このコードは私に最適です。