【JavaScript】focus()方法

在JavaScript中,focus()虽然比较罕见,但还是比较有用的,

主要是用于获取焦点,说白了,就是自动把光标放到此组件上面,无须用户再次操作。

直接用一个例子说明问题:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/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中适用
                document.getElementById("text_2").focus();
            }, 5000);
        </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" "http://www.w3.org/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();
    document.getElementById("text1").focus();
    function endless_loop(){
        document.getElementById("text1").focus();
    }
</script>

运行效果如下:


开始先在将光标放到text1这个文本框,之后马上触发对话框的onblur获取焦点事件调用endless_loop函数,继续不停地将光标放到text1这个文本框,当然此处的代码,写成self.focus()也是可以的,此处的self特指text1这个文本框。

上述死循环在野狐禅、谷歌等浏览器不适用,相当于无限的alert()被禁止一样。

  • 17
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值