昨天修改机顶盒上面的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出现了,就简单说了一句话就解决了这个问题!有可能要主动调用blur()将原来的焦点取消掉!
document.getElementById("purchase").blur()
然后就解决了这个问题。不得不感概!在解决这个问题的过程中,自己的思路其实还是蛮正确的,但知识面显然不够。一般程序员和高级程序员的差距除了解决问题的思路方面,也有经验和知识面的差距!
这几天遇到两个在IE8下
focus
失效的非常奇怪的问题,当然这个是指JS函数:document.getElementBy
Id
("
id
").
focus
(); 或者 $("#
id
").
focus
();
问题一: 楼主的页面是在ifram中,点击ifram中的保存按钮后,会重定向到这个页面,并且在domcument.ready()中会将
焦点
给予第
一个
文本框。但奇怪的是,第一次打开这个页面是
没有
问题的...
在jsp页面中,有时候我想让
一个
控件在页面打开的时候就成为
焦点
,要怎么做呢?
代码很简单,在标签里加这么一句:
onload="
javascript
:document.getElementBy
Id
('mailput').
focus
();"
就OK了。这里的mailput是你的控件
id
.
今天在ipad上遇到
一个
问题:jquery 调用 $(
id
).
focus
()
方法
,失效,不能弹出键盘获得输入的
焦点
。
开始以为是$(
id
).
focus
()
方法
的问题,然后就试着用原声的document.getElementBy
Id
('
id
').
focus
()
方法
,结果还是不行
想啊想,最后叫ios的同事帮忙看看,结果是ios外壳要给输入框某个权限,修改了外壳,...
后来发现是因为Vue的原因,因为Vue是先处理数据,再重绘Dom,这中间有个时间差,可以写在Vue的生命周期钩子updated(当这个钩子被调用时,组件 DOM 已经更新,所以现在可以执行依赖于 DOM 的操作)中,不过最好还是用Vue自己的
方法
来操作
遇到
一个
如下代码在某些情况下会不生效的问题
<input
id
="el" type="text">
<body/>
最近在程序里写的input标签只有第一打开的时候存在
focus
之后再打开就
没有
focus
只能自己手动的操做。
所以只需要在程序中加这段话就能始终获得
焦点
了
setTimeout(function(){
$("#input_
id
name").
focus
();
},500)
加
一个
定时器就可以了
html内容
<a-select ref="searchSelectRef" show-search >
<a-select-option v-for="(d, index) in list" :key="index" :value="d.
id
">
{{ d.name }}
</a-select-option>
</a-select&
var link = document.createElement('a');
link.href = 'image_url';
link.download = 'image_name.jpg';
link.click();
其中,`image_url` 是图片的 URL 地址,`image_name.jpg` 是下载图片的文件名。这段代码通过创建
一个
超链接元素,并将其 `href` 属性
设置
为图片 URL 地址,`download` 属性
设置
为图片文件名,最后通过调用 `click()`
方法
来触发下载。
Failed to introspect annotated ** org.springframework.boot.web.support.SpringBootServletInitializer
Restful接口规约