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学习基础知识小结
Nov 25 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
Feb 27 Javascript
jQuery获取注册信息并提示实现代码
Apr 21 Javascript
node.js中的dns.getServers方法使用说明
Dec 08 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 Javascript
Bootstrap组合上、下拉框简单实现代码
Mar 06 Javascript
node.js通过axios实现网络请求的方法
Mar 05 Javascript
深入浅出理解JavaScript闭包的功能与用法
Aug 01 Javascript
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
node.js使用zlib模块进行数据压缩和解压操作示例
Feb 12 Javascript
小程序分享链接onShareAppMessage的具体用法
May 22 Javascript
浅谈JavaScript中的“!!”作用
Aug 03 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
php目录管理函数小结
2008/09/10 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
JQuery ztree带筛选、异步加载实例讲解
2016/02/25 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
python pickle 和 shelve模块的用法
2013/09/16 Python
Python socket编程实例详解
2015/05/27 Python
Python导入oracle数据的方法
2015/07/10 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
破解安装Pycharm的方法
2018/10/19 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
会计系毕业生求职信
2014/05/28 职场文书
2015年采购部工作总结
2015/04/23 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
高一军训感想
2015/08/07 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js