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

时间:2013-01-20 19:56:59

标签: javascript

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

  • 我有一个带有按钮的主窗口,当它被点击时打开一个新窗口并自动调用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()函数中调用它们,无论如何它对我来说都没问题。

3 个答案:

答案 0 :(得分:1)

尝试改为给予主窗口焦点:

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

答案 1 :(得分:0)

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

答案 2 :(得分: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);
});