最初のバージョンではxとyが表示されず、次のエラーが表示されます:Uncaught TypeError: Cannot read property 'pageX' of undefined
2番目のバージョンは機能しますが、コードが非常に似ているため、問題を見つけることができません。
最初のバージョン(機能しない)
<form name ="show">
<input type="text" name="mouseXField" value="0" size="6">Mouse X Position<br>
<input type="text" name="mouseYField" value="0" size="6">Mouse Y Position<br>
</form>
<script type="text/javascript">
var mie = (navigator.appName == "Microsoft Internet Explorer") ? true : false;
if (!mie) {
document.captureEvents(Event.MOUSEMOVE);
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousemove = mousePos();
document.onmousedown = mouseClicked();
var mouseClick;
var keyClicked;
var mouseX = 0;
var mouseY = 0;
function mousePos (e) {
if (!mie) {
mouseX = e.pageX;
mouseY = e.pageY;
}
else
mouseX = event.clientX + document.body.scrollLeft;
mouseY = event.clientX + document.body.scrollTop;
document.show.mouseXField.value = mouseX;
document.show.mouseYField.value = mouseY;
return true;
}
</script>
セカンドバージョン(WORKING)
<form name="Show">
<input type="text" name="MouseX" value="0" size="4"> X<br>
<input type="text" name="MouseY" value="0" size="4"> Y<br>
</form>
<script type="text/javascript">
var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var tempX = 0
var tempY = 0
function getMouseXY(e) {
if (IE) {
tempX = event.clientX + document.body.scrollLeft
tempY = event.clientY + document.body.scrollTop
}
else
{
tempX = e.pageX
tempY = e.pageY
}
document.Show.MouseX.value = tempX
document.Show.MouseY.value = tempY
return true
}
</script>
一目で:clientX
はclientY
であり、欠落している{}
(else
内):
else {
mouseX = event.clientX + document.body.scrollLeft;
mouseY = event.clientY + document.body.scrollTop;
}
また、関数にイベントを送信する必要があります、
document.onmousemove = function (e) {mousePos(e);};
...
function mousePos (e) {
...
これをチェックしてください: http://jsfiddle.net/NLsdZ/1/
また、captureEvents
の使用は非推奨です。代わりにaddEventListener
を使用してください。詳細はこちら: http://forums.asp.net/t/1576872.aspx
また、あなたが以下でオンロードしていない、または少なくともあなたがそうであることを述べていないことに気づきました。
var mie = (navigator.appName == "Microsoft Internet Explorer") ? true : false;
if (!mie) {
document.captureEvents(Event.MOUSEMOVE);
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousemove = mousePos();
document.onmousedown = mouseClicked();
次のように/または最終的に私のために働いたはずです:
window.onload = function () {
mie = (navigator.appName == "Microsoft Internet Explorer") ? true : false;
if (!mie) {
document.captureEvents(Event.MOUSEMOVE);
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousemove = function (e) {mousePos(e);};
document.onmousedown = function (e) {mouseClicked();};
};