何らかの目的で、Window.Eventオブジェクトを変数にキャッシュして後で使用したいのですが、MSIEはこれが「不明」であると言い続けます。
以下のコードをIEで実行するだけで、意味がわかります
どうすればこれが起こるのでしょうか?私は何か見落としてますか?
html:
<button id='btn'>Click!!!</button>
JS:
var eventObj = null;
document.getElementById('btn').onclick = function() {
eventObj = window.event;
setTimeout(function() {
alert(typeof eventObj.srcElement);
}, 1000)
}
EIDT 1:
私は他の人によって行われたいくつかのテストを検索しました、以下を参照してください:
HTML:
<button id='btn1'>Click 1 !!</button>
<button id="btn2">Click 2 !!</button>
JS
var btn1EventObj = null;
document.getElementById('btn1').onclick = function() {
btn1EventObj = window.event;
alert(btn1EventObj.srcElement.id);
}
document.getElementById('btn2').onclick = function() {
alert(btn1EventObj === window.event); // output:false;
alert(btn1EventObj.srcElement === window.event.srcElement); // output: true ;
alert(btn1EventObj.srcElement.id); // output: btn2 ;
}
btn1がクリックされたら、「イベントオブジェクト」をbtn1EventObjにキャッシュし、btn2をクリックすると仮定します。
テスト:
btn1EventObj === window.event-> false; //MSIEにはイベントオブジェクトが1つだけではありません
btn1EventObj.srcElement === window.event.srcElement->true //以下のこれを理解できません。
btn1EventObj.srcElement.id-> btn2
フィドルを参照してください
したがって、上記のすべては、MSIEで発生したすべてのイベントがすべて共有属性であり、btn2がクリックされると、前のすべての属性が後の属性によって上書きされることを示しています。
私はちょっと正しいですか?