我正试图在窗口打开时取消对焦,情况如下:
我有一个带有按钮的主窗口,当它被点击时打开一个新窗口并自动调用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()函数中调用它们,无论如何它对我来说都没问题。
答案 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);
});