私は Web アプリに取り組んでおり、ユーザーがキーボード ショートカットを押して新しいタブまたはウィンドウで何かを開くことができるようにしたい状況があります。明らかに、ポップアップ ブロッカーがここで問題を引き起こす可能性があります。ポップアップウィンドウが何らかのユーザー操作(クリック、キープレスなど)から開始されたかどうかを判断することで、彼らがインテリジェントになろうとしていることを私は知っています。Chrome はこの問題をうまく処理しているようで、キーボード ショートカットを押すと新しいタブが開きますが、Firefox はそれをブロックします。
このSOの質問で提示されたほとんどすべての解決策を含め、多くのことを試しましたが、FFでは何もうまくいかないようです。新しいウィンドウをポップアップする関数がクリック イベント ハンドラーから呼び出され、キーボード イベント ハンドラーから呼び出されない場合、FF では問題なく動作します。質問は、FF のキーボード イベントからこれを機能させる方法を知っている人はいますか?
これを機能させるための私の最新の試みは次のとおりです(Chromeでは機能しますが、FFでは機能しません):
var $newTabEl = $('<div>');
$(document.body).append($newTabEl);
$newTabEl.click(function() {
$(this).target = "_blank";
window.open('/request/preview/requestId/' + data.get('id'));
return false;
});
$newTabEl.click();
$newTabEl.remove();