请注意,这与窗口上的焦点和模糊事件有关,而不是与表单字段有关。
我正在弹出窗口中加载文档,它包含以下代码:
<script type="text/javascript">
window.onblur = function(){ document.title="BLURRED"; }
window.onfocus= function(){ document.title="FOCUSED"; }
</script>
这些功能是暂时的,用于测试。我希望使用这些事件来设置一个指示窗口状态的标志;我正在做一个聊天应用程序,如果消息在最小化时进入,我会做一些注意力的标题更改。但是,如果他们在窗口聚焦时没有取消,那么他们就会很烦人。
Onload,我也把重点放在textarea上。 (不确定这是否有所不同。)
IE7(我没有其他版本的方便)似乎识别window.onblur
而不是window.onfocus
。 Opera 10简直太奇怪了。
以下是我所拥有的浏览器中发生的情况。我通过单击父级中的链接启动弹出窗口,然后通过单击(Windows XP)任务栏上的弹出按钮来完成几个最小化还原周期:
Safari 4:
这就是我预期会发生的事情。
Firefox 3.5:
onfocus onload有点令人惊讶,但不是问题。
IE7:
onfocus发生了什么?
Opera 10.5
...有时
...有时
好的,这简直太奇怪了......
我对其他方法持开放态度,但我真的很想了解这里发生了什么,用普通的旧Javascript - 所以请不要给出jQuery答案,除非确实没有另一种方式。
谢谢!
答案 0 :(得分:6)
onfocus 和 onblur 。另一种方法是使用传播 onfocusin 和 onfocusout 事件:
function focusin() { document.title="BLURRED"; }
function focusout() { document.title="FOCUSED"; }
if ("onfocusin" in document)
document.onfocusin = focusin,
document.onfocusout = focusout;
else
window.onblur = focousout,
window.onfocus= focusin;
我为您here设置了一个示例。
与焦点和模糊不同,focusin 和焦点正在传播事件;他们将触发页面中的元素并向上冒泡。如果您不想对页面上的所有元素执行此事件,则需要检查 event.srcElement 或 event.target 。
至于Opera,“奇怪”是你可以使用的一个词。我的机器上的版本不会为我启动窗口上的模糊或焦点事件。希望其他人可以为您提供解决方案。