イベントプロパティは、イベント、文書またはウィンドウの要素を生成するように、ターゲット・ノード・イベント(イベントのトリガ・ノード)を返しターゲット。
一般的に、我々は、標準的なブラウザのevent.targetを解決することができますが、IEブラウザの下のバージョンは常に、より一体的な蛾になり、我々はevent.srcElementを使用する必要があり、この時間を使用しています。
今度は、文言の互換性を持っている必要があります。
1、三項演算子を使用して
var Target = event.target ? event.target : event.srcElement
2、声明かどうかを判断します
if(event.target){ // IE10及以下版本浏览器不能识别
// do something...
}else if(event.srcElement){ // IE10及以下版本会执行该代码
// do something...
}
たとえば:今、あなたは、トリガ・イベントのボタンをクリックすると、リスニングイベントにボタンを追加したい、この時間は次のように書くことができます。
<button id="btn">按钮</button>
<script>
// tagName返回的标签名默认都是大写的,可使用toLowerCase将其转换为小写
var btn = document.getElementById('btn');
if(btn.attachEvent){ // IE8及以下版本写法
btn.attachEvent('onclick',function(ev){ // Firefox下必须给函数传一个参数,一般会传event或ev,否则会报错,其他浏览器可不传,为了兼容性,所以给函数传参以防出错。
var Target = ev.target ? ev.target : ev.srcElement;
console.log(ev.type); // 事件类型
console.log(Target.tagName) // 触发该事件的标签名,为大写,不同的浏览器可能会返回不同的结果
})
}else if(btn.addEventListener){ // IE8及以下版本不支持
btn.addEventListener('click',function(ev){ // Firefox下必须给函数传一个参数,一般会传event或ev,否则会报错,其他浏览器可不传,为了兼容性,所以给函数传参以防出错。
var Target = ev.target ? ev.target : ev.srcElement;
console.log(ev.type);
console.log(Target.tagName)
})
}
</script>
ます。https://www.cnblogs.com/jf-67/p/8179008.htmlで再現