JavaScript使用focus()设置焦点失败的解决方法


Posted in Javascript onSeptember 03, 2014

昨天修改机顶盒上面的EPG页面,遇到一个小问题。用户购买游戏时需要弹出购买确认对话框,对话框的默认焦点规定必须停留在“取消”按键上。很简单的需求,使用JavaScript的focus()方法就可以实现了。简单的代码示例如下:

document.getElementById("cancel").focus()

但是苦逼的是,机顶盒真是一个大坑。由于要兼容所有现存的机顶盒型号,需要对8款机顶盒进行适配。然后就出现问题了!一款中兴B600的机顶盒完全没法将焦点设置到取消按键上。以下是我的解决思路:

首先确认该机顶盒是否支持getElementById()方法以及是否成功获得了ID为“cancel”的元素:测试方法很简单,直接另写了一个 <p id="test">test</p> ,然后在同样的地方获取ID为“test”的元素,并进行了简单的操作document.getElementById("test").innerHTML="Hello"
最后使用了“try...catch(e)...”捕捉“focus()”失败的原因

try(){ 
<span style="white-space:pre"> </span>document.getElementById("cancel").focus() 
}catch(e){ 
<span style="white-space:pre"> </span>alert(e.name + ": " + e.what()); 
}

但是就是很奇怪!以上两步的结果表明该机顶盒支持focus()和getElementById(),但是就是无法设置焦点到弹出的对话框中。

前前后后折腾了一个多小时,最后大BOSS出现了,就简单说了一句话就解决了这个问题!有可能要主动调用flur()将原来的焦点取消掉!

document.getElementById("purchase").flur()

然后就解决了这个问题。不得不感概!在解决这个问题的过程中,自己的思路其实还是蛮正确的,但知识面显然不够。一般程序员和高级程序员的差距除了解决问题的思路方面,也有经验和知识面的差距!

Javascript 相关文章推荐
比Jquery的document.ready更快的方法
Apr 28 Javascript
基于jquery的图片懒加载js
Jun 30 Javascript
javascript数字格式化通用类 accounting.js使用
Aug 24 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
Javascript中Array用法实例分析
Jun 13 Javascript
JQuery之proxy实现绑定代理方法
Aug 01 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
Feb 22 Javascript
javascript用rem来做响应式开发
Jan 13 Javascript
vue如何截取字符串
May 06 Javascript
layui--js控制switch的切换方法
Sep 03 Javascript
深入理解 ES6中的 Reflect用法
Jul 18 Javascript
JS中一些高效的魔法运算符总结
May 06 Javascript
javascript实现浏览器窗口传递参数的方法
Sep 03 #Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 #Javascript
javascript刷新父页面的各种方法汇总
Sep 03 #Javascript
判断在css加载完毕后执行后续代码示例
Sep 03 #Javascript
jQuery实现倒计时按钮功能代码分享
Sep 03 #Javascript
jQuery自带的一些常用方法总结
Sep 03 #Javascript
JavaScript实现从数组中选出和等于固定值的n个数
Sep 03 #Javascript
You might like
一个php作的文本留言本的例子(四)
2006/10/09 PHP
php中变量及部分适用方法
2008/03/27 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
javascript设计简单的秒表计时器
2020/09/05 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
python 自动识别并连接串口的实现
2021/01/19 Python
python如何构建mock接口服务
2021/01/28 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
运动会广播稿30字
2014/01/21 职场文书
国旗下的演讲稿
2014/05/08 职场文书
白岩松演讲
2014/05/21 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
装修安全责任协议书
2016/03/22 职场文书