ユーザーがマウスをページの外に移動したときにメッセージを表示するWebページがあります。InternetExplorerを除くすべてのブラウザですべてが完全に機能します。Internet Explorerでは、ユーザーがフォーム選択項目をクリックしない限り、私のコードは機能します。ユーザーがドロップダウンリストから項目を選択すると、clientXとclientYが誤った値を報告します。これにより、ユーザーがマウスをページの外に移動したかのようにメッセージが表示されます。メッセージは、マウスが実際にページの外に出たときにのみ表示されます。私はすでに古いバージョンのIEの回避策を使用しています。古いIEブラウザ(7-8)でコードが正しく機能するように、この問題に取り組む別の方法を知っている人はいますか?
これが私のコードです:
if (document.addEventListener) {
window.addEventListener("mouseout", popMessage, false);
} else { // IE before version 9
document.attachEvent ('onmouseout', popMessage);
}
.
.
.
.
var mouseX = 0;
var mouseY = 0;
function popMessage (e) {
mouseX = e.pageX;
mouseY = e.pageY;
if ('pageX' in e) { // all browsers except IE before version 9
var mouseX = e.pageX - document.documentElement.scrollLeft;
var mouseY = e.pageY - document.documentElement.scrollTop;
}
else { // IE before version 9
mouseX = e.clientX + document.documentElement.scrollLeft;
mouseY = e.clientY + document.documentElement.scrollTop;
}
if ((mouseY < 0 || mouseY > window.innerHeight-1)
|| (mouseX < 0 || mouseX > window.innerWidth-1))
{
abandonPanel.show();
// alert("x:" + mouseX + " y:" + mouseY + " innerHeight:" + window.innerHeight + " innerWidth:" + window.innerWidth);
if (document.addEventListener) {
window.removeEventListener("mouseout", popMessage, false);
} else { // IE before version 9
document.detachEvent ('onmouseout', popMessage);
}
}
}