window.blur() -我做错了什么

window.blur() - what am I doing wrong

本文关键字:错了 什么 blur window      更新时间:2023-09-26

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

  • 我有一个主窗口的按钮,打开一个新的窗口,当它被点击,并自动调用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文档,一切似乎都很好。

—Edit—

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

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()函数内调用它们,无论如何它对我来说都很好。

尝试给主窗口焦点:

function openWindow() {
  var exampleWin = window.open('example.html','Example','width=500,height=500');
  window.focus();
}

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

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

$('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);
});