0

我试图在打开窗口时取消焦点,情况是:

  • 我有一个带有按钮的主窗口,单击该按钮会打开一个新窗口并自动调用 blur() 方法,因此该窗口应该在后台,但是什么也没发生,我在 Firefox 和 Chrome 的最新版本上进行了尝试。

    function openWindow() {
      var exampleWin = window.open('example.html','Example','width=500,height=500');
      exampleWin.blur();
    }
    // and the HTML:
    <button onclick="openWindow();">Open Window</button>
    

代码很简单,但我不确定为什么它不起作用,我什至查看了 MDN 文档,一切似乎都很好。

- 编辑 -

最后我找到了一个稍微不同的解决方案:

function openWindow() {
            /* This time I don't use var keyword, so the exampleWin variable 
               will have a global scope */
    exampleWin = window.open('example.html','Example','width=500,height=500');
}

function focusFn() {
    exampleWin.focus();
}

function blurFn() {
    exampleWin.blur();
}

// The HTML:
<button onclick="openWindow();">Open Window</button>
<button onclick="focusFn();">Focus</button>
<button onclick="blurFn();">Blur</button>

它以这种方式正常工作,但如果我使用 onclick 事件调用焦点/模糊函数,而不是在 openWindow() 函数中调用它们,无论如何这对我来说都很好。

4

3 回答 3

1

尝试给主窗口焦点:

function openWindow() {
  var exampleWin = window.open('example.html','Example','width=500,height=500');
  window.focus();
}
于 2013-01-20T20:01:46.903 回答
0

这样做在大多数情况下效果更好......

$('a').click(function(e){
    e.preventDefault();
    var evt = document.createEvent("MouseEvents"),
        ele = document.createElement('a');

    ele.href = $(this)[0].href;
    evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
    ele.dispatchEvent(evt);
});
于 2014-01-28T20:26:05.603 回答
0

使用 exampleWin.focus() 而不是 exampleWin.blur()

于 2013-01-20T20:05:20.087 回答