一般的な問題
たとえば、ドロップダウンメニューを想像してみてくださいmouse over
。リンク上にいると、ドロップダウンがポップアップ表示されます。
しかし、以下の記事で読むことができるように、リンク(一部のブラウザーでは要素内のすべて)にマウスオーバーすると、ボックスが消えてしまうという問題があります。問題はから来ていevent bubbling
ます。
私のドキュメントonmouseover
でonmouseout
はdelayed with 0.5 seconds
、この問題のために要素が振動し始めることがあります。
--------------
| Layer |.onmouseout = doSomething;
| -------- |
| | Link | ----> We want to know about this mouseout
| | | |
| -------- |
| -------- |
| | Link | |
| | ----> | but not about this one
| -------- |
--------------
---->: mouse movement
よりよく理解するためにこの記事を読んでください:
www.quirksmode.org-Javascript-マウスイベント
クァークズモードソリューション
function doSomething(e) {
if (!e) var e = window.event;
var tg = (window.event) ? e.srcElement : e.target;
if (tg.nodeName != 'DIV') return;
var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
while (reltg != tg && reltg.nodeName != 'BODY')
reltg= reltg.parentNode
if (reltg== tg) return;
// Mouseout took place when mouse actually left layer
// Handle event
}
私の文書
あなたはここで私の完全な文書を見つけることができます:
mouseEvent(e)
ここで機能のない元のドキュメントを見つけることができます:
ボタンの上にマウスを置き、次にボックスの上にマウスを置き、すぐにマウスアウトしてすぐにボックスに戻ると、振動が始まります。(Firefox 3.6 Windows 7の場合)
Javascript
<script type="text/javascript">
function mouseEvent(e) {
if (!e) var e = window.event;
var tg = (window.event) ? e.srcElement : e.target;
if (tg.nodeName != 'DIV') return;
var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
while (reltg != tg && reltg.nodeName != 'BODY')
reltg= reltg.parentNode
if (reltg== tg) return;
// Mouseout took place when mouse actually left layer
// Handle event
}
function toggleByType(id, type, e){
setTimeout(function(){
var element = document.getElementById(id);
if(element.style.display == type){
mouseEvent(e);
element.style.display = 'none';
} else {
element.style.display = type;
}
}, 500);
}
</script>
HTML
<div class="box-container" onmouseover="toggleByType('box','block');" onmouseout="toggleByType('box','block', event);">
<a href="#" class="box-bridge">Show Box</a>
<div id="box" class="box" style="display:none;">
Mouse out and this will dissapear.
<br />
<a href="#">Roll over to have problems</a>
</div>
</div>
私の問題
quirksmodeが与える解決策は論理的に聞こえhow to use the function
ますが、私が投稿したものが1つだけであるかどうかはわかりませんが、わかりません。これを作成するのを手伝っていただければ幸いです。仕事。