【JavaScript】focus()⽅法
在JavaScript中,focus()虽然⽐较罕见,但还是⽐较有⽤的,
主要是⽤于获取焦点,说⽩了,就是⾃动把光标放到此组件上⾯,⽆须⽤户再次操作。
直接⽤⼀个例⼦说明问题:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>self_focus</title>
<script type="text/javascript">
window.setTimeout(function(){
window.self.focus();//仅在IE中适⽤
}, 5000);
input绑定onblur事件</script>
</head>
<body>
<input type="text" id="text_1" /><input type="text" id="text_2" />
</body>
</html>
上述代码,设置在打开⽹页5秒之后,⽆须⽤户操作,focus()⽅法会⾃动将光标放到id为text_2这个⽂本框,在IE的运⾏效果如下:
在野狐禅的运⾏效果如下:
在IE中,window.self.focus();还会起作⽤。5秒后,窗⼝还会⾃动获得焦点,切换到其他窗⼝,或者其他程序,等5秒,IE浏览器还会⾃动返回到前台,成为活动窗⼝,⽽在野狐禅等其他浏览器中不适⽤。⽕狐、⾕歌等为了安全性,设置浏览器⽆法实现控制⽤户⾏为。在其他程序应⽤时,让浏览器获取窗⼝焦点这个是⽆法做到的。最少在浏览器内部js⽆法做到。 不过对于chrome或者firefox,safari之类的浏览器可以⽤过Notification这个类来做⼀个弹出通知。然⽽notification必须要⽀持html5,太⿇烦。⽬前要求窗⼝获取焦点,基本上⽤alert去实现。
由于IE的window.self.focus();是其作⽤的,不被禁⽌的,配合onblur()获取焦点事件,还能构造⼀个死循环,让IE崩溃,如下的代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>endless_loop_blur</title>
</head>
<body>
<input type="text" onBlur="endless_loop();" id="text1">
</body>
</html>
<script type="text/javascript">
window.self.focus();
function endless_loop(){
}
</script>
运⾏效果如下:
开始先在将光标放到text1这个⽂本框,之后马上触发对话框的onblur获取焦点事件调⽤endless_loop函数,继续不停地将光标放到text1这个⽂本框,当然此处的代码,写成self.focus()也是可以的,此处的self特指text1这个⽂本框。
上述死循环在野狐禅、⾕歌等浏览器不适⽤,相当于⽆限的alert()被禁⽌⼀样。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。