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 相关文章推荐
JS实现窗口加载时模拟鼠标移动的方法
Jun 03 Javascript
基于JS实现的倒计时程序实例
Jul 24 Javascript
利用D3.js实现最简单的柱状图示例代码
Dec 09 Javascript
jQuery表单验证之密码确认
May 22 jQuery
在Vue项目中引入腾讯验证码服务的教程
Apr 03 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
Sep 30 Javascript
js实现移动端轮播图
Dec 21 Javascript
浅谈express.js框架中间件(middleware)
Apr 07 Javascript
vue学习笔记之slot插槽用法实例分析
Feb 29 Javascript
Vue中的this.$options.data()和this.$data用法说明
Jul 26 Javascript
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
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
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
php实现简单四则运算器
2020/11/29 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
setAttribute 与 class冲突解决
2008/02/17 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
javascript中this关键字详解
2016/12/12 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
Python通过Pillow实现图片对比
2020/04/29 Python
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
linux面试题参考答案(5)
2016/11/05 面试题
《商鞅南门立木》教学反思
2014/02/16 职场文书
开业庆典主持词
2014/03/21 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
党校个人总结
2015/03/04 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技