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

教えて!goo内にて、スクロールしても画像もしくは、文字がついてくるJavascriptのコードが下記のようにありました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
function F1() {
v='.pixelTop=';dS='';sD='.style';y='document.body.scrollTop';}
function F2() {
obj='obj1';yy=eval(y);eval(dS+obj+sD+v+yy);setTimeout('F2()',10);}
</script>
</head>
<body onload="F1();F2();">
<div
id='obj1'
style='position:absolute;left:0px; top:0px;'>
ここが動きます。
</div>
<script type="text/javascript">
for(var i=0;i<100;i++){document.write('<br>')}
</script>
</body>
</html>

そこで質問なのですが、DOCTYPEを下記のように変更すると動作しなくなったのですが、この原因が調べてもわかりませんでしたので、どなたか原因がわかる方教えていただけませんでしょうか? 使用ブラウザは、IE6 です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

A 回答 (2件)

<script type="text/javascript">


window.onscroll = function(){
document.getElementById('obj1').style.top = (document.body.scrollTop ||document.documentElement.scrollTop) + 200 + 'px';
}
</script>

で、位置に固定させる事ができます。数字200の部分をobj1のtopと同じにする事で変更可能です。
    • good
    • 0
この回答へのお礼

ありがとう御座います。
解決致しました。

大変勉強になりました。

お礼日時:2008/03/12 23:44

DOCTYPEで動かなくなるのはScrollTopのとり方の問題です。



document.body.scrollTop
document.documentElement.scrollTop
の2つを用意して、どちらか取れるほうにしておけばよいので、書き換えようと思いましたが、

そのスクリプトではFirefoxでは動かないので

BODYタグの onloadとそのスクリプトを削除して

<script type="text/javascript">
window.onscroll = function(){
document.getElementById('obj1').style.top = (document.body.scrollTop ||document.documentElement.scrollTop) +'px';
}
</script>

でDOCTYPEやブラウザに関係なく動くと思いますが、どうでしょう?

この回答への補足

ありがとうございます。 
勉強になりました。 
もう一つ教えていただけますでしょうか?

下記の通り、style='position:absolute;top:200px; right:100px; ' を追加し画面の中ほどに画像をおいて、そこから画像をスクロールさせようと思うのですが、スクロールをすると、画像が上部に移動してしまいます。
中央部に固定された状態で下部へ画像がスクロールすることはできますでしょうか?
よろしくお願いします。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
</head>

<body>
<div id='obj1' style='position:absolute;top:200px; right:100px; '>
<img src="a.gif">
</div>

<script type="text/javascript">
for(var i=0;i<100;i++){document.write('<br>')}
</script>


</body>
</html>


<script type="text/javascript">
window.onscroll = function(){
document.getElementById('obj1').style.top = (document.body.scrollTop ||document.documentElement.scrollTop) +'px';
}
</script>

補足日時:2008/03/12 23:04
    • good
    • 0

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