親や祖先要素のレイヤーをスクリプトから認識できない
症状
スクリプトを用いる場合、親要素や祖先要素をオブジェクトとして参照することができない。
例示
<div style="position:absolute;" id="l1">外部</div> <form"><div> <input type="button" value="外から変更" onclick="javascript:document.layers['l1'].bgColor='aqua'"> </div></form> <div style="position:absolute;" id="l2">内部 <form><div> <input type="button" value="内から変更" onclick="javascript:document.layers['l2'].bgColor='lime'"> </div></form> </div>
外部
内部
ボタンを押すと各々のレイヤーの背景色が変わります。前者は背景色を設定するスクリプトがレイヤー要素の外部の要素にある場合、後者はスクリプトがレイヤー要素の子孫要素に存在する場合です。
スクリーンショット
※両方のボタンを押してスクリプトを動作させた後の状態です。なお、レイヤーl2の背景色を変えようとするとJavaScriptコンソールに「document.layers.l2 has no properties.」というメッセージが表示されます。
Netscape Navigator4.8
補足
ここではイベント属性で直接スクリプトを指定する方法を用いましたが、script要素を用いる場合にも同様の現象が発生します。head要素内に置いたscript要素内でスクリプトを指定することでこの不具合を回避することができます。
修正状況
- NN4.8で不具合の発生を確認しました。
関連記事
- 親要素で指定したスタイルが表要素に継承しない
- 特定のスタイルを指定すると省略した終了タグが正しい位置に補われない
- clearでフロートへの隣接を禁止した要素がフロートに重なる
- アンカーにボーダーを設定するとアンカーとして機能しなくなる
- 画像アンカーのボーダーを消去できない
- style属性でスタイルを設定するとimg要素の位置がずれる
- マージン、ボーダー、パディングを設定したインライン要素の位置がずれる
- 画像を読み込まない設定下では背景画像と背景色の指定が無効になる
- 要素名に続けて書いた一意セレクタを認識しない
- 改行を挟まない連続した要素で直前の要素のfont-size値がfont-size算出に用いられる
- 実在しない開始タグがstyle属性を含む開始タグの直後に現れる
- line-heightの倍率指定で算出値が継承する
- border-colorの既定値とtransparent値に対応する色が#000000になっている
- head要素と子孫要素のdisplayプロパティを変更できない
- ボーダーとマージンを設定した要素内のフォント指定が無視される
- スタイル適用時にdt, dd, liなどの要素の内容物が無視される
- 背景やボーダーがブロック全体に表示されない
- fontプロパティで文法違反をするとブロック全体のスタイル指定が無視される
- 外部スタイルシート内の相対パスをリンク元文書からの相対パスとして扱う
- 表の背景色塗りつぶしが正常に行われない場合がある
- 存在しない外部スタイルシートを読み込むHTML文書をまったく表示できない
- 特定の条件下では、フレーズ要素を使用したページを表示できない
- ウィンドウをリサイズするとレイヤーの位置がずれる
- 画像が含まれる要素にline-heightを指定すると画像のレイアウトが狂う
- フォント名に2バイト文字が含まれるフォントを指定するとスタイルが無効になる
スポンサーリンク