3

我正在开发一个 Web 应用程序,并且我有一种情况,我希望允许用户按下键盘快捷键以在新选项卡或窗口中打开某些内容。显然,弹出窗口拦截器会在这里产生问题。我知道他们试图通过确定弹出窗口是否是从某种用户交互(点击、按键等)启动的来变得聪明。Chrome 似乎可以很好地处理这个问题,按下键盘快捷键时会打开新标签,但 Firefox 会阻止它。

我已经尝试了很多东西,包括这个SO question中提出的几乎所有解决方案,但似乎对 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();
4

0 回答 0