ソース:国内20万サイトのWebブラウザ互換性を調査,172種もの非互換要因を発見
一連の記事中で、
オーサリングツールが原因のことも多い
非互換要因を含んだサイトは多数あることが判明したのですが,なぜこんなに多いのでしょうか?実はオーサリングツールによる影響が大きいのです。
私たちは今回の調査に先立ち,TouchUpWebというツールを開発しています。今回同様,IEとFirefoxを比較していると頻繁に発見される非互換要因があり,これらは同じオーサリングツールから出力されたものであることに気づきました。
そこで,今回要素に指定された著者情報を取得し,オーサリングツールによる影響を調査しました。その結果,いくつかの主要な非互換要因は個人向けのオーサリングツールから出力されたものであることが判明しました。一方,プロユースのオーサリングツールが出力したページはあまり検出されませんでした
とあったので、これ絶対ホームページ・ビルダーも含まれるよなと思って、提言書を読んだら案の定って感じ。あと、Microsoft Officeを使ったページをそのままHTMLに変換して公開しているのも当然のことながら含まれてます。
報告書と提言書については、オープンソースソフトウェア活用基盤整備事業 成果一覧にあります。いずれもPDFファイルです。興味のある方は両方に目を通されるといいかと。
(2007-06-01 追記)
今回互換性の対象となったのは、IE6とFirefox1.5であり、その他のブラウザとの互換性については何も言及されていません。また、Web標準でないものでも実装されていて、互換性がある場合、デファクトスタンダードとしており、問題として扱っていません。
Generator吐きのダントツのトップは、ホームページ・ビルダーです。(報告書99ページ参照)
Generatorを吐き出している数65,675で、そのうち44,707(Generatior吐きをしている内で68.07%)がホームページ・ビルダー。V11になっても相変わらず初期設定ではGenerator吐きがあるので、困った物です。いい加減に初期設定何とかしろって感じ。
(5) 非互換要因ID:80の傾向(標準の無視)
非互換要因ID:80は、Web標準を無視した記述である。
CSSのz-index に対して、負(-1)等の値を指定する場合には基準値を指定しなければならないが、IEでは、この基準値がない場合でも独自に解釈してレンダリングを行っている。ここでは、基準値を無視した記述を生成しているオーサリングツールを対象として抽出した。
本非互換要因の記述に関しては、IBM Homepage Builderが圧倒的に検出数が多いことがわかる。
Generatorの集計ではIBM Homepage Builderの使用率が最も高い。そのバージョンごとの内訳を見てみると、Homepage Builder Ver.6~Ver.10 において平均的に検出されていた。Ver.11はリリースされて2 ヶ月程度であり、利用者も少ないことから検出数は低い。そのため、この問題を含んでいるかどうか不明である。
ホームページ・ビルダーでは、z-indexの値としてマイナスの値を取れてしまいます。V11でも同様です。→ホームページ・ビルダーV11でz-indexを指定するときの画面
CSS2のz-indexに関する説明では、値に auto | <integer> | inherit が取れるとなっています。
integerについての説明は、以下の通りです。
Some value types may have integer values (denoted by <integer>) or real number values (denoted by <number>). Real numbers and integers are specified in decimal notation only. An <integer> consists of one or more digits "0" to "9". A <number> can either be an <integer>, or it can be zero or more digits followed by a dot (.) followed by one or more digits. Both integers and real numbers may be preceded by a "-" or "+" to indicate the sign.
要するにz-indexプロパティの値としてマイナスの値は取れないのです。CSS2.1でも同様。
解決策として、以下のような記述があるけど、はっきり言って恥ずかしいよ。単にFirefoxに対応するだけのものですよね。
z-indexに負の値を指定するためには、基準(z-index=0)となる要素を指定しないといけない。IEは指定が省略できるが、Firefoxでは省略されるとz-indexが指定されたエレメントがすべて表示されない。
この問題に関しては、<body>タグのスタイルに"position: relative; z-index: 0;"を指定することで修正することが可能である
まあ、調査乙。Firefoxという特定ブラウザで互換性を確保するというTouchUpWebというプロジェクトそのものが大金投じて何やってるんだかって感じだし。
(追記 2007-06-02)仕様に関する説明で、完全なミスリード故に間違った記述をしてしまいました。申し訳ありません。該当部分を削除します。
z-indexに関する負の値の扱いに関してはルート要素(html要素)によって生成されるルートスタック文脈のレベルがいくつなのかという問題があります。
また、「CSSのz-index に対して、負(-1)等の値を指定する場合には基準値を指定しなければならない」というのはどこに根拠があるのかわかりません。従って今の私には、基準値指定がない負の値を持つz-indexを指定することがWeb標準でないと判断できません。
わかる方おられましたら、ご教示ください。
Firefoxで正の値を指定している場合に、基準となる値を明示しなくても表示できるということは、ルートスタック文脈のレベルは暗黙の内に0になっているのでしょうか?
Firefoxで表示されない件については、z-indexだけが悪いのではなく、positionプロパティとの組み合わせで発生する問題です。z-indexを使う場合、positionプロパティとの組み合わせることが多いため、問題が発生すると。
実際、めちゃくちゃ適当なサンプル ホームページ・ビルダーV11製で確認してみたところ、IE7、Opera9.21、Safari2.0.4では読めます。Firefox(1.5系、2.0系いずれも)だけが読めません。

コメント (2)
>要するにz-indexプロパティの値としてマイナスの値は取れないのです。CSS2.1でも同様。
なにが「要するに」でありましょう。其処にはそう書いてございませんが。以下私訳:
>いくつかの値型では、整数値または実数値を持つかもしれない。実数値と整数値は、十進記数法だけで指定される。整数値は一桁以上の0~9から成る。実数値も同じ形式だが、ゼロ桁以上の十数進の後にドット(.)を続けられ、その後に一桁以上の十数進を続けられる。実数値と整数値の両者は、その直前に "-" もしくは "+" の正負を示すことができる。
其後のセンテンスに於て「多くのプロパティでは、負ではない範囲に制限されるかもしれない」とは指摘されて居ります。
しかしながら、CSS2.1 section 9.9 'z-index' を確認しますと、明確に "Boxes may have negative stack levels." と述べられて居ります。一体何処をお読になったのでございましょう。
次のように積み重ねの順序に関しても述べられて居ります。
>各々のスタッキング文脈は、以下のスタッキングレベル(背面から前面まで)から成る:
>1. スタッキング文脈を構築している要素の背景とボーダー。
>2. 負のスタックレベルを持つ子孫のスタッキング文脈。
>(以下略)……
私は 'z-index' の仕様に関して充分な見識を持っては居りませんので、ブラウザの実装が正しいかどうかまでは判りかねます。ただ仕様上、負の値が指定できることは明らかでございます。不十分な見解によって特定のヴェンダを不当に貶めることがないよう、しっかり仕様書を参照して頂きたうございます。
それから不等号がサニタイズして居られない様なので、改善されたほうが宜しいかと存じ上げます。
投稿者: anonyme | 2007年06月02日 10:04
日時: 2007年06月02日 10:04
コメントを受けて、記事を修正しました。
仕様書のミスリードです。申し訳ありません。
投稿者: FUMING | 2007年06月02日 20:50
日時: 2007年06月02日 20:50