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 相关文章推荐
使Ext的Template可以解析二层的json数据的方法
Dec 22 Javascript
JavaScript中的细节分析
Jun 30 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
用Move.js配合创建CSS3动画的入门指引
Jul 22 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
解决vue-cli中stylus无法使用的问题方法
Jun 19 Javascript
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
vue axios请求拦截实例代码
Mar 29 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
Apr 23 Javascript
laravel实现中文和英语互相切换的例子
Sep 30 Javascript
关于JSON解析的实现过程解析
Oct 08 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
获得Google PR值的PHP代码
2007/01/28 PHP
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
泰国网上购物:Shopee泰国
2018/09/14 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
宿舍保安职务说明书
2014/02/25 职场文书
公司建议书怎么写
2014/05/15 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
学习经验交流会总结
2015/11/02 职场文书