3

ユーザーがページをスクロールするときにカーソルがある div から別の div に移動したときに関数をトリガーできる hover メソッドの代替方法またはトリックはありますか。

現在の投稿divのホバーイベントでjavascript(jQuery)を使用して動作するようになりました。ただし、マウスが実際に動かされたときにのみホバーイベントがトリガーされることに気付きました。キーボード (ページ) を使用してページを上下にスクロールすると、トリガーされません。

(たとえば、soup.io がこれを機能させる方法を見つけたことに注意することができますが、その方法を見つけることができません)

4

3 に答える 3

1

残念ながら、それは非常に複雑です。イベントに依存することはできなくなります。onMouseOverページがスクロールされたときにトリガーされるイベントは。だけですonScroll。必要な手順:

  1. 要素を調べ、それぞれの幅、高さ、オフセット(画面の左/上からの距離)を配列に格納します。
  2. onScrollイベントがトリガーされたら、選択したすべての要素に対してカーソルの最後の既知の位置を確認します(配列を通過します)。カーソルが要素の1つにある場合は、ハンドラーを呼び出します。

クイック(信頼性の低い)プロトタイプ:http://pastie.org/507589

于 2009-06-10T18:42:32.350 に答える
0

マウスホイール イベントを探しています。

document.getElementById('myDiv').onmousewheel = function() {
  alert('You win!');
  alert('Seriously! It's just like that');
};

これを Chrome (webkit) でのみテストしました

于 2011-11-16T00:41:08.403 に答える
0

サンプルはありますか?ページ上の要素のレイアウトがマウスオーバーイベントをブロックしていると推測しています。以下の私の簡単な例は、あなたが説明したとおりに機能します。ページの上部にカーソルを置き、キーボード ナビゲーションを使用すると、マウスオーバーイベントが発生します。

<html>
<body>
<script>
function log(text)
{
    document.getElementById('logger').value += text + "\n";
}
</script>

<div id="div1" style="background: yellow; height: 100px;margin-top: 100px" onmouseover="log('mouseover div1');">
div1
</div>
<textarea id="logger" cols="60" rows="12" style="float:right;"></textarea>
<div id="div2" style="background: red; height: 1000px" onmouseover="log('mouseover div2');">
div2
</div>
</body>
</html>
于 2009-06-10T17:45:29.843 に答える