我正在开发一个网络应用程序,我想让用户按下键盘快捷键在新标签页或窗口中打开一些内容。显然弹出窗口拦截器可能会在这里产生问题。我知道他们试图通过确定弹出窗口是否是从某种用户交互(点击,按键等等)启动而变得聪明。 Chrome似乎处理得很好,在按下键盘快捷键时打开新标签,但Firefox会阻止它。
我已经尝试了很多东西,包括this问题中提出的几乎所有解决方案,但似乎没有什么能用于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();