名前付きテーブルの各行に mousedown イベントを登録して、テーブルから行を選択できるようにしたい (コードを参照)。Firefox 14.0、Chrome 20.0.1132.47、IE 8 (テスト用) でテストしています。
イベント ハンドラーで、要素のタイプ (タグ名) をコンソールに書き込みますTR
。これは Firefox では期待どおりに機能しますが、Chrome と IE ではTD
、ハンドラーがTR
.
<script>
var myFuncs = {
// generic stop event bubbling up any further (DOM level2 and IE)
stopProp: function (event){
if (!event) var event = window.event;
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
},
// generic add event listener
addListener : function(elt,evt,listener){
if (document.attachEvent){
elt.attachEvent ("on"+evt,listener);
}
else {
elt.addEventListener (evt,listener,false);
}
},
// the function that is supposed to handle mousedown events on <tr> tags
handleMousedown : function(evt) {
myFuncs.stopProp(evt);
elt = (window.event) ? window.event.srcElement : evt.currentTarget;
console.log(elt.tagName);
},
// attach/add event listener to <tr> elements in named table
registerEvts : function(){
var tab = document.getElementById("dataGrid");
var rows = tab.getElementsByTagName("tr");
for (var ix=0; ix < rows.length; ix++){
myFuncs.addListener (rows[ix],"mousedown",myFuncs.handleMousedown);
}
}
}
window.onload = myFuncs.registerEvts;
</script>
他の誰かがこの問題に遭遇しましたか? その後、それが行なのか、扱っていたセルなのかをテストする必要があるため、問題が発生します。