以下代码想捕捉到引起oblur事件的目标DOM元素。操作:先点击“原位置”使之获取焦点,再点击“点我”。程序获取“点我”的button节点。目前兼容IE和FF,请高手看下谷歌浏览器下如何获取onlur事件的属性~
<script language="javascript">
function blurEl(e){ var child=null;
if(window.event){
e=window.event;
child=document.elementFromPoint(
e.clientX + document.documentElement.scrollLeft, e.clientY
+ document.documentElement.scrollTop);
}else
child=e.explicitOriginalTarget;
document.getElementById('show').innerHTML="触发失去焦点的DOM为"+child.id;
}
</script><input value="原位置" onblur="blurEl(event)" /><button id="点我">点我</button>
<script language="javascript">
function blurEl(e){ var child=null;
if(window.event){
e=window.event;
child=document.elementFromPoint(
e.clientX + document.documentElement.scrollLeft, e.clientY
+ document.documentElement.scrollTop);
}else
child=e.explicitOriginalTarget;
document.getElementById('show').innerHTML="触发失去焦点的DOM为"+child.id;
}
</script><input value="原位置" onblur="blurEl(event)" /><button id="点我">点我</button>
function blurEl(e){
if(!e){var e=window.event}
var child=e.target||e.srcElement;
document.getElementById('show').innerHTML="触发失去焦点的DOM为"+child.id;}
</script><input value="原位置" onblur="blurEl(event)" id="starwrw"/> <button>点我 </button>
<div id=show></div>
function blurEl(e){ var child=null;
if(!event.target){
e=window.event ;
child=document.elementFromPoint(
e.clientX + document.documentElement.scrollLeft, e.clientY
+ document.documentElement.scrollTop);
alert("blurIE")
}else {
e.stopPropagation();
child=event.target;
alert("blurChrome")
//child=event.explicitOriginalTarget
}
document.getElementById('show').innerHTML="触发失去焦点的DOM为"+child.id;
}
function asd(){
alert("click")
}
</script> <input value="原位置" onblur="blurEl(event)" ID="Text1" NAME="Text1"/> <button id="点我" onclick=asd()>点我 </button>
<div id=show></div>
window.onload=function(){
var div=document.getElementById("Text1");
div=addEventListener("blur",blurEl,false)
}
这么说chrome下获取不到这样的DOM元素?
没有做不到,只有想不到哈~高手都来看看哈~
alert("click");
}
window.onload=function(){
var div=document.getElementById("Text1");
div.addEventListener("blur",blurEl,false);var div1=document.getElementById("xxx");
div1.addEventListener("click",click,false)
}
能想到的办法就是获得当前点到对象的target,如果点到对象的event能先捕获到,那移出以后event.target就能正确得到,如果explicitOriginalTarget 有效也不用这么麻烦了
按你的意思,应该是指用click事件,而不在加入onlur事件吧~
还有,IE下你用document.activeElement就行了chrome虽然支持event.currentTarget 获得当前focus的对象,但是结果还是不正确,获得的始终是<input>框的对象,冒泡和捕获阶段同样无效..