firefox中的event.explicitOriginalTarget使用问题

深邃老夏 2011-10-31 11:19:18
今天开发狂遇IE和FF兼容性问题,直接说问题吧。
把问题最简化的代码:
<input id="test1" type="text"onblur="a(event)"/><br/>
<label id="test3">点我就可以弹出正确的!</label><input id="test2" type="text" />

<script type="text/javascript">
function a(event){
var ele;
if(window.event){
ele=document.activeElement;
}else{
ele=event.explicitOriginalTarget;
}
alert(ele.value);
}
</script>

此时我已经解决了IE和FF得到当前焦点所在元素的兼容性问题,因为FF不兼容document.activeElement,必须用事件来得到当前焦点所在元素,也就是event.explicitOriginalTarget。但是点击的结果是,IE一切正常,但是FF的话,点击id="test3"的label,alert出正确的test3;但是点击id="test2"的input type="text",显示的却是id="test1"的input type="text" !!!
在这里我可以给出点我掌握的信息,首先只有input type="text"和input type="password"会标签会出现这样的问题,input type="radio"和其他的都不会。其次,看网上一些资料是说对于input type="text",event是先执行onclick或其他的事件,所以不是传入的event就不知道是什么的了。我觉得应该和这个有些关系,但是小弟是纠结好久没出来答案,希望有遇到此问题的高手帮忙解答下!
...全文
278 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
EEXXTTJJSS 2011-12-28
  • 打赏
  • 举报
回复
alert(ele.value)
不是就获取<input id="test1" type="text"onblur="a(event)"/>值么,value就是为""
如果只是获取值<input id="test1" type="text"onblur="a(this)"/>
然后通过this.value就可以获取值的,不需判断浏览器了。
tzg157 2011-12-28
  • 打赏
  • 举报
回复
e.explicitOriginalTarget,它指向的是事件最先发生的那个对象。
深邃老夏 2011-11-15
  • 打赏
  • 举报
回复
没人知道么? 只有自己顶了
深邃老夏 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jayrao5566 的回复:]
JScript code

改为 ele = event.currentTarget;
[/Quote]

测了一下,没有用,返回的是text1的""
jayrao5566 2011-11-01
  • 打赏
  • 举报
回复
改为 ele = event.currentTarget;

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧