こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ScriptがFirefoxで動かない。

素人な質問ですみません。
htmlファイルで背景画像をスクロール
させようとしています。
 
Internet ExplorerとGoogleChromeでは
動作するのですが、FireFoxで動作しません。
自分で調べてもわからなかったため、
知識のある方にご教授をお願いしたいです。
よろしくお願いします。
 
<HTML><LEFT><HEAD>
<META HTTP-EQUIV="Context-Type" content="text/html; charset=SHIFT-JIS"><!-- あ --><META NAME="Description" CONTENT=" "><meta http-equiv="adimage" content="200"><TITLE>menu</TITLE>

<HEAD>

<script language="JavaScript">
<!--
var myspd= 120;
var y = 0;
function mygo()
{
document.body.style.backgroundPositionY = y--;  
setTimeout("mygo()",myspd);
}
// --></script>

</HEAD>

<BODY BACKGROUND="http://hakoniwakensetsu.web.fc2.com/img/kumo.gif" onLoad="mygo();">
</BODY></LEFT></HTML>

投稿日時 - 2013-02-27 11:20:25

QNo.7966921

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

document.body.style.backgroundPositionY = y--;

を以下に置き換える。

document.body.style.backgroundPosition = "center " + (y--) + "px";

これでFireFoxで動きます。が今度は他のブラウザで異常がでるかもしれないので、

if('backgroundPositionY' in document.body.style){
document.body.style.backgroundPositionY = y--;
}else{
document.body.style.backgroundPosition = "center " + (y--) + "px";
}

if(prop in obj) でobjオブジェクトにpropプロパティがあるかどうかで分岐して、
document.body.style.backgroundPositionYが使えたら元のまま、
使えなければ(つまりFireFoxであれば)document.body.style.backgroundPositionを使います。


> このまま丸ごとコピーしたのが
> 良くないのか、挿入する場所が良くないのか、
> 全部ではなく一部の単語だけ入れ替えるべきなのか、
> それとも何か自分なりにアレンジしないと
> いけないのか・・・自分の技量では、あの行を
> どう処理すればいいのかわかりませんでした。
>
リンク先のブログを紹介したのは、あのソースがそのまま使えますよ。ということではなく
「background-position-yはIEの独自実装をwebkitが取り込んだものなのでFirefoxで動かないのは仕方ない。」らしいですよ、と伝えたつもりでした。

(1) (CSSの)background-position-yプロパティはFxでは使えない
(2)Fxではbackground-position-yの代わりにbackground-positionを使う
(3)background-positionは値として水平と垂直を同時に設定するらしい
(4)今回は水平はcenterで垂直の位置を変えるわけだからbackground-position:center Ypx
(5)Fxでbackground-position:center Ypxを試してみる
(6)うまくいった。では元の処理と今回の処理を分岐させるか。
(7)完成

という流れで考えていけるようになりましょう。
自分はCSSに詳しいわけではないので、Fxではbackground-position-yが使えないことも、
background-positionの値の設定の仕方も知りませんでした。
なので、検索して(1)(2)(3)を知りました。
知ってなきゃいけないことと知ってたほうが良いことは、最初はなかなかわからないですよね。
なので最初は一通り、体系的に学ぶことをお勧めします。
多分今のあなたはjavascriptの基本の基本もできていないのだと思われます。

投稿日時 - 2013-02-27 19:15:10

お礼

ご教授ありがとうございます。動きました。
仰る通り、基本の基本もできていません。
解決方法をこのように紐解き発想することも、
自分の頭だけでは思いつきませんでした。
大変助かりました。
ご提供頂きましたif文も入れてみましたが、
入れた場所が合っているのかどうかすら
相談相手もなく、暗中模索状態です。
もう少し勉強してみます。今回は本当に
ありがとうございました。

投稿日時 - 2013-02-27 20:31:50

ANo.1

お礼

回答頂き、誠にありがとうございます。
このリンク先に書いてある1行を
追加してみましたが、解決しませんでした。

このまま丸ごとコピーしたのが
良くないのか、挿入する場所が良くないのか、
全部ではなく一部の単語だけ入れ替えるべきなのか、
それとも何か自分なりにアレンジしないと
いけないのか・・・自分の技量では、あの行を
どう処理すればいいのかわかりませんでした。
 
ご回答ありがとうございました。

投稿日時 - 2013-02-27 18:19:47

あなたにオススメの質問