プロが教える店舗&オフィスのセキュリティ対策術

java script
マウスに追従する 画像について。

実装はできるのですが、こういった事象で困っています。
「縦スクロールに対して追いついてこない」
「1スクロール分したに移動するたびにおいてきぼりになる。」

このサイトも同じ事になってしまってます。
http://ameblo.jp/ma-reete/entry-10445768523.html

という事です。
以下、スクリプトでは間違っているのでしょうか。
回答お願いします。

(当方IE8試用、FFではみれないようですね。)


<script language="JavaScript"><!--
function moveImage()
{
x = event.x;
y = event.y;
document.getElementById("myIMG").style.left = x;
document.getElementById("myIMG").style.top = y;
}
// --></script>

<link href="style.css" rel="stylesheet" type="text/css" /></head>

<body onMousemove="moveImage()">
<!--mouse 画像 start-->
<IMG src="image/common/mika002.gif" id="myIMG">
<!--mouse 画像 start-->

A 回答 (3件)

#2です。



手元のIE6では動作するようです。
IE8がないので確認できませんが、仕様変更されている可能性がありそう。
event.xは変わっていないと思いますので、document.allかdocument.bodyか…

まぁ、
document.all["ID"] は document.getElementById("ID")
などにしておいたほうが無難かと。

http://yakinikunotare.boo.jp/orebase/index.php?J …
(↑)によればIE7では、document.bodyがdocument.documentElementになっているみたい。
一方で、IE7はdocument.bodyでもいけてるみたい。(↓)
http://archiva.jp/web/javascript/get_mouse-posit …
IE8はわからないけれど、このあたりがあやしいのでは?

ところで、どのような環境での利用をお考えか不明ですが、IE限定でよいのでしょうか?
個人ユースのスクリプトなのか、HPならIE限定のページとかなのかな?

この回答への補足

きっと、FF、IEをフォローできればOKだと思います。
元請からの要請なので。しかし、下にもありましたように元々IEでフォローをいう事だったのでFFは無理と私は判断しております。

補足日時:2010/05/07 23:11
    • good
    • 0

検索すると同じスクリプトがあちこちに見られるので、よほど使いまわされているのだとは思うけれど、少々古い感じは否めません。


どれが元なのかわからないけれど、基本的に気になる点が2箇所。
1)画面のスクロール分を考慮していないので、追随しきれない。
2)元はIE専用のスクリプトとして作成されていたはず。
 (なので対応していないブラウザがある。例えばFireFox)

1)に対してはこんな感じでいけるはずですが、ブラウザ限定は変わらない。
  (document.allとかevent.xとか)
http://javascript.eweb-design.com/0903_mi.html
http://www.webstudio.jp/web_studio/tech/files/m0 …

2)も考慮するなら、こんな感じ
http://www.shuraba.com/?p=computing/js/scroll

実装例(スクロール部分しか実装してないけれど。しかもtopのみ)
http://jsajax.com/Articles/alwaysmenu/307

この回答への補足

1)http://javascript.eweb-design.com/0903_mi.html


を参考に 実装してみましたが、
やはり 置いてきぼりになってしまいます..なにかエラーが起こっているのでしょうか?


以下現在の状況。 参照

<title></title>
<SCRIPT language="JavaScript">
function mouseImage() {
document.all["ID"].style.left= event.x + 8 + document.body.scrollLeft;
document.all["ID"].style.top = event.y + 16 + document.body.scrollTop;
}
document.onmousemove = mouseImage;
</SCRIPT>
<link href="style.css" rel="stylesheet" type="text/css" /></head>
<body>
<!--mouse 画像 start-->
<div id="ID" style="position:absolute;"><IMG src="image/common/002.gif" id="myIMG"></div>
<!--mouse 画像 start-->

補足日時:2010/05/06 22:58
    • good
    • 0

スクロール分が計算されていませんね。



x = event.x + document.body.scrollLeft;
y = event.y + document.body.scrollTop;

これで行けるでしょうか。

この回答への補足

できませんでした

補足日時:2010/05/06 22:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!