WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:固有の問題?

綾小路 [MAIL] [URL] [WriteDate : Thu Apr 12 01:51:16 2001]

IE6のベータと、NN6で試したのですが、CSSで背景画像を設定した後に、JavaScriptのIF文で、表示を変える分岐をした場合、背景画像が表示出来ない症状が出てるのですが、私のPC固有の問題なのでしょうか?
以下に、サンプルスクリプトを掲載しておきますので、識者の方々、是非レスを下さいませm(__)m

サンプル
<HEAD>
<STYLE TYPE=TEXT/CSS>
BODY.0{background:#FFFFFF; background:URL(./bg0.gif) repeat-y right}
</STYLE>
</HEAD>
<Script>
var i;
i=0;
if (i=0) {document.write("<BODY CLASS=0>",i);}
</Script>

IE6の方は、マイクロソフトへ問い合わせをして、サンプルページのアドレスを送って欲しいとの事だったので、送って有りますので、正式版で対処の可能性も有るかとも思います。

R.M [WriteDate : Thu Apr 12 07:04:33 2001]

>if (i=0) {document.write("<BODY CLASS=0>",i);}
if (i==0) {document.write("<BODY CLASS=0>",i);}
ではないでしょうか

綾小路 [MAIL] [URL] [WriteDate : Thu Apr 12 23:32:58 2001]

RMさん>
>if (i==0) {document.write("<BODY CLASS=0>",i);}
>ではないでしょうか

失礼しました、間違えでした。m(__)m
そこで、改めてですが・・・
if (i==0) {document.write("<BODY CLASS=0>",i);}
としても、症状はやはり出てしまいます。
IE5.5までは大丈夫だったので、疑問に思いまして。


andi [WriteDate : Fri Apr 13 09:40:59 2001]

'background'
値: <background-color> || <background-image> || <background-repeat> || <background-attachment> || <background-position>

background:url()の値がbackground-colorに適用されようとしているのでは?
background:#FFFFFF url();またはbackground-image:url()では出来ないでしょうか?

andi [WriteDate : Fri Apr 13 09:45:28 2001]

上の情報はhttp://www.y-adagio.com/public/standards/css1/cssmain.htmからです。
自分の手元のIE5.0ではbackground:url()で表示されました。
・・・今までの対応の方が間違えているってことかな。


andi [WriteDate : Fri Apr 13 09:47:03 2001]

あ、すみません。値の順番は省略できるみたいですね。
といことはやはりIE6のバグ?

綾小路 [MAIL] [URL] [WriteDate : Fri Apr 13 10:58:44 2001]

>RM様
>andi様
大変ありがとうございましたm(__)m

取りあえず、この件は解決しました。(NN6/IE6b両対応)
以下のスクリプトにて対応しました。

サンプル
<HEAD>
</HEAD>
<Script>
var i;
i=0;
if (i=0) {document.write("<BODY CLASS='background:#FFFFFF; background:URL(./bg0.gif) repeat-y right'>",i);}
</Script>

ヘッド位置でのCSS設定を無くして、JavaScriptの中で改めて宣言しただけなんですが、スクリプトは長く成るし、ソースが綺麗だと言い難いのでイヤなんですが、この方法だと、双方の新ブラウザに対応できました。

σ(^^)が、小賢しく考えるに、JavaScriptとCSSを組み合わせる際、一部のスタックが上書きかクリアされてしまう、もしくは、新規にbackground命令が追加される為に予約に成った可能性があるなどかと、思いますがどうなんでしょう^^;

NNの方って、問い合わせ出来るのかな??^^;

カヅサツ [MAIL] [URL] [WriteDate : Fri Apr 13 13:38:28 2001]

N6 でダメなのは文法的に、ちょい不正だからではないかと想像します。

> </HEAD>
> <Script>
> var i;
> i=0;
> if (i=0) {document.write("<BODY CLASS=0>",i);}
> </Script>

SCRIPT 要素は HEAD 要素あるいは BODY 要素内にしか置けません
(というか、 HTML 要素直下には HEAD 要素と BODY あるいは FRAMESET 要素しか置けません)。
上記例の場合、HEAD 要素の終了タグが出た時点で HEAD 要素は終わっており、
続いて SCRIPT 要素の開始タグが出現しているため、
それは BODY 要素に含まれ、かつその開始タグが省略されていると解釈されます
(XHTML 以外では BODY 要素は開始・終了タグ共に省略可能なため)。

そして、スクリプトで <BODY 〜> を書き出すということはつまり結果的に、

</HEAD>
<body> <!-- ←これを自動的に補う -->
<body class=0>

このように扱います。
# 注: N6 がそうだというか、 HTML の仕様に忠実なユーザエージェントは
# こう解釈せざるをえない気がします。

BODY 要素内に BODY 要素があるのは文法違反ですから、
二つ目の BODY 要素(の CLASS 属性)を解釈するかどうかは
ユーザエージェント次第というか、解釈されなくてもおかしくありません。


綾小路 [MAIL] [URL] [WriteDate : Sat Apr 14 00:03:37 2001]

>カヅサツ様
大変ありがとうございますm(__)m
かなり参考になります。
勉強不足で、HTMLの細かい規則とかを知らないまま、やってたようで、汗顔の至りです^^
これからも、是非、ご教授ください^^
回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]