代码改变世界

IE的onfocus取代

2010-05-10 11:59  BlueDream  阅读(1526)  评论(1编辑  收藏  举报

本来页面有这样的需求:

一个文本框,当鼠标移上的时候,让其获得焦点,这样可以增强用户的体验,方便用户直接操作文本框.

这个需求在程序上很容易实现.我们可以几句代码搞定:

<input type="text" id="oinput" style="width:300px;height:30px;"/>
<a href="http://www.baidu.com" target="_blank">Baidu</a>
<script type="text/javascript">
window.onload = function() {
    document.getElementById('oinput').onmouseover = function() {
        this.focus();
    }
}
</script>

看是很简单的程序却恰恰不那么完美.在IE浏览器下.当你在这个页面新打开一个窗口的时候.再移动到这个页面的文本框上,那么这个文本框还会focus.而导致这个页面被激活.那么用户新打开的浏览页面就会被挡在后面.那样用户会很莫名.

 

那么这个问题的出现.就成了一个棘手问题.所以说有时候学知识.不定哪天就会用上.前段时间写编辑器的时候用了次onbeforedeactive方法.印象里看见了个setActive方法,这个方法不会激活文档.具体见setActive

这样就解决了IE下的这个问题.

window.onload = function() {
    document.getElementById('oinput').onmouseover = function() {
        this.setActive();
    }
}