私のアプリケーションでは、いくつかの新しい要素を作成し、ユーザーの操作に従ってそれらをページに追加します。
var dv=document.createElement('div');
//set styles for the dv
.....
この div 要素を作成した後、いくつかのイベントを追加します。
MyLib.Event.addDomListener(dv,'click',function(e){
console.info('click');
});
MyLib.Event.addDomListener(dv,'mousedown',function(e){
console.info('mousedown');
});
これは、ページで生成された結果です (div には img タグと span タグが含まれます)。
ページがロードされた後、問題が発生します。
画像を直接クリックすると、click
イベントはトリガーされませんが、mousedown
イベントはトリガーされます。
画像なしで div を直接クリックすると、すべてうまくいきます。
画像をクリックすると、click
イベントがdivに委任されないようです。
しかし、Chrome 開発ツールを使用して最終的に生成されたコードをコピーすると、次のようになります。
<div id="con" style="position: absolute; border:1px solid red; left: 10px; top: 10px; width: 20px; height: 34px; ">
<img src="http://localhost/MAPALINE/IMAGES/MARKER_LARGE.PNG" id="ov" style="left: 0px; top: 0px; position: relative; width: 20px; height: 34px; ">
<span style="text-align: center; left: 0px; top: 0px; width: 20px; position: absolute; ">1</span>
</div>
次に、それを新しい .html ファイルにコピーし、イベント スクリプトを追加します。
<script type="text/javascript">
var con=document.getElementById('con');
con.addEventListener('click',function(e){
console.info('click');
},false);
con.addEventListener('mousedown',function(e){
console.info('mousedown');
},false);
</script>
これで、div 内のどこをクリックしても、2 つのイベントの両方が発生します。
私は本当に頭がおかしいです、何が問題なのですか?生成されたdivに対して特別なことは何もしません。
それで、あなたの誰かがこの問題に遭遇したかどうか知りたいですか?または、どのような場合にこの種の例外が発生する可能性がありますか?
アップデート:
Mylib.Event.addDomListener=function(target,evt,handler){
if(target.addListener){
target.addListener(evt,handler,false);
}else if(target.atttchEvent){
target.attachEvent('on'+evt,handler);
}else
#~ target['on'+evt]=handler;
}
クロスブラウザでの使用のみで、mousedown
とにかくイベントがうまく機能することに注意してください。