2012-04-25 6 views
2

私は非常に似ているいくつかのページを持っています。彼らはいくつかのjavascriptロールオーバーリンクを持っています(イメージはあらかじめロードされています。その後、イメージスワップ関数を呼び出すonMouseOverイベントがあり、最後に元のイメージを復元するonMouseOutイベントがあります)。マウスのポインタがページの読み込み後にすでに終了しているときにトリガーonMouseOver

ロールオーバーリンクがまったく同じ位置にある別のページを指し示すロールオーバーリンクをクリックすると、新しいページの画像は「オーバー」状態で読み込まれることになります。これはChromeやSafariの場合には当てはまりません(IEとFirefoxは期待通りに動作します)。

So ...ページが読み込まれているとき、マウスが既にイメージをホバリングしてすぐにスワップするかどうかを確認する方法はありますか? "OnMouseAlreadyOver"のようなもの?

ありがとうございます。

+1

単にcss:hoverを使用する方がよいかもしれません。このサイトのリンクにチェックマークを付けるだけで、マウスを動かさずにpageloadにホバーが表示されます。 – Jerry

+0

"画像スワップ機能を呼び出すonMouseOverイベント" - 1996年にようこそ! –

答えて

2

jQueryを使用している場合、問題なく動作します。

http://jsfiddle.net/beuae

(だけではなく、ボタンのため、divs also用)

実は、jQueryのは、あなたが期待するようにすべてが行く保証非常に良いフレームワーク、クロスブラウザです。この例はそれを確認します。

0

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

//Get Mouse Position 
document.onmousemove=getMouseCoordinates; 
function getMouseCoordinates(event){ 
    ev = event || window.event; 
    mouseX = ev.pageX; 
    mouseY = ev.pageY; 
} 
0

することはできません、他のページに変数を渡したり推移して(そして人々は、マウスの位置を変更しない場合には、フェイルオーバーします)あなたがチェックできる理論的には

をかを追跡するためにクッキーを使用せずマウスの位置とボタンの位置ですが、イベントが発生しない限りマウスの位置を取得する方法はないため、マウスを移動しなければならず、移動するとCSS:ホバーがトリガされます。

ほとんどの人がリンクをクリックし、次のページを待ってから、そのリンクをつかまえてもう一度クリックする準備ができていることは疑いの余地があります。

私は、Webkitがここで最善の方法を持っていないのだろうと思っています。なぜ、あるページの動作を別のページに移植するのでしょうか。

0

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

要するに、JavaScriptでは使用できません。あなたはCSSを使用して残されています。

0

W3C standardは言う

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

=スクリプト[CT]
ONMOUSEMOVEれるonmousemoveイベントが発生します。この属性は、ほとんどの要素で使用できます。

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

onmousemove(またはその両方)を使用する必要があります。

関連する問題