2

非常によく似たページがいくつかあります。いくつかの JavaScript ロールオーバー リンクがあります (画像がプリロードされ、次に画像スワップ関数を呼び出す onMouseOver イベントがあり、最後に元の画像を復元する onMouseOut イベントがあります)。

ユーザーが、まったく同じ位置にロールオーバー リンクがある別のページを指すロールオーバー リンクをクリックすると、新しいページの画像が「オーバー」状態でロードされることが予想されます。これは、Chrome と Safari には当てはまりません (IE と Firefox は期待どおりに動作します)。

それで...ページの読み込み時に、マウスがすでに画像の上に乗っているかどうかを確認して、すぐに交換する方法はありますか? 「OnMouseAlreadyOver」のようなものですか?

ありがとうございました。

4

5 に答える 5

2

jQueryを使えば問題なく動きます!

http://jsfiddle.net/beuae

(ボタンだけでなく、divも

実際、jQuery は非常に優れたフレームワークであり、すべてが期待どおりに動作し、クロスブラウザーであることを保証します。この例はそれを確認します。

于 2012-04-25T16:29:54.443 に答える
1

W3C標準は言う

onmouseover = script [CT]
ポインティング デバイスが要素上に移動すると、onmouseover イベントが発生します。この属性は、ほとんどの要素で使用できます。

onmousemove = script [CT]
onmousemove イベントは、ポインティング デバイスが要素上にあるときに移動すると発生します。この属性は、ほとんどの要素で使用できます。

mouseoverオブジェクトの境界を越えたときに発生します。mousemoveマウスがすでに要素の上にあるときに発生します。

使用する必要がある場合がありますonmousemove(または両方)。

于 2012-04-25T16:19:45.817 に答える
0

要素の位置とマウスカーソルの位置に基づいて実際に計算を行う必要がある場合があります。

//Get Mouse Position
document.onmousemove=getMouseCoordinates;
function getMouseCoordinates(event){
    ev = event || window.event;
    mouseX = ev.pageX;
    mouseY = ev.pageY;
}
于 2012-04-25T16:14:43.227 に答える
0

変数を他のページに渡すか、Cookie を使用してホバーされたものを追跡せずにはできません (ユーザーがマウスの位置を変更すると、フェールオーバーします)。

理論的には、マウスの位置とボタンの位置を確認できますが、イベントがトリガーされない限りマウスの位置を取得する方法がないため、マウスを移動する必要があり、移動した場合は CSS :hover がトリガーされるはずです。

これは小さな問題ですが、ほとんどの人がリンクをクリックし、次のページを待ってから、そのリンクがホバーされて再度クリックできるようになることを期待しているとは思えません (そうでない限り、誰も同じボタンをクリックし続けないのはなぜですか?違うことをする)

UX の観点からは、webkit がここで最善のアプローチを持っていないのではないかと思います。あるページのアクションを別のページに移植するのはなぜでしょうか。

于 2012-04-25T16:18:46.757 に答える
0

を使用document.getElementFromPoint(mouseX, mouseY)して要素を取得できますが、カーソルの位置を取得する唯一の方法はイベントを介することです。問題は、唯一のイベントがクリックとマウスの動きであり、最初からユーザー入力が必要であり、これを回避しようとしていることです。

つまり、JavaScript ではできません。CSS を使用する必要があります。

于 2012-04-25T16:19:02.540 に答える