Opera 6 for Mac の各種仕様実装状況

Opera 6 for Mac の正規版がやっとこリリースされました。とすればやはり(?)気になるのは Web 標準仕様の実装状況。そのへんをあれやこれやを調査しましたですよ。

いちおうこのページはギジュツ資料とかゆー物のつもりらしーので、使用感とかは触れませぬ。そのへんは日記にゴチャゴチャ書いてるのでそっちにて。(→ねこめしにっき:Opera6 for Mac 正規版がリリースされちゃった

注:これらは 6.0 での状況です。今後まだ進展があるかもしれませぬ。テストは MacOSX 10.2.2 上で実施。

HTML/XML 実装状況

Win 版とほとんど変わらない感触。いやちゃんと調べたわけじゃないけど。感触だけでモノ言ってますよこの人。

HTML

とりあえず abbrq あたりを解釈できるし、現代のブラウザとしては合格ラインと見ていいのでわ。…おいおいテキトーだな。いちお Opera version 6 supports HTML 4.01 てことになっとりますが、なら XHTML1.1 まではフツーにイケるわけで。

あ、ソース中でマーク区間を使ってるとき、閉じてるトコの "]>" とかが見えちゃいますね。ありゃりゃ。

XML

…というか、XML としての HTML である XHTML 方面だけの話しかしませんが。本格 XML はぼく自身まだまるで自分のモノとして生活しとりませんから。うへ。

application/xhtml+xml の MIME タイプで送られてきた XHTML 文書を表示できまふ。そのときは XML として処理されてるよーで、ワザと文法ミスした XHTML 文書を食らわせてみたら当然のよーに XML パースエラーが出たです。 Mozilla と同じ。

ただし HTTP_ACCEPT には application/xhtml+xml が無い模様で、コンテントネゴシエーションで application/xhtml+xmltext/html を切り替えてるリソースの場合、受信されるのは後者になる模様。

CSS 実装状況

感触的には Mac 版でもだいたい上記リンク先の説明どおりな気がするけど、ちゃんと調べたわけじゃない。めんどくさいので過去の資産や有志による蓄積情報を元にテキトーに調べることにしよっと。今後おかしなとこが見つかればその都度にっきネタにしつつこのページにも纏める方向で。

自分的に気になるモノの実装状況・バグ

Win 版 Opera6 beta のリリース時に検証に使ったリソースを再利用。やはりごく一部以外はほとんど Win 版の状況と同じ。

カテゴリ 項目 対応状況
疑似要素 :before OK
:after OK
:first-line OK
:first-letter OK (日本語OK)
疑似クラス :focus NG?
:first-child NG
:lang NG
content プロパティ content:"string" OK
content:attr(attr) OK
content:url(url) NG
content: counter(name) OK
属性セレクタ [attr] OK
[attr="value"] (完全一致) OK
[attr~="value"] (部分一致) OK
[lang|="value"] (lang属性前方一致) OK
文脈セレクタ A > B (子要素セレクタ) OK
A * B (孫要素セレクタ) OK
A + B (隣接セレクタ) OK
エスケープ文字 \63\6F\6C\6F\72:red OK
\63olor:red OK
\63 olor:red OK
そのほか counter 関連プロパティ OK
:hover 疑似クラスの効く要素 a 要素のみ
a:hover hoge { ... }( :hover 疑似クラスの子要素) 反映せず
font-size:100% ( Win 版では 1em より一回り小さくなる) 正常
* { font-size:inherit }( Win 版でクラッシュするバグ) 同じく死亡

CSSバグリスト@CSSバグ辞典スレッド

上記リンク先で挙げられてるのは Windows 版 Opera6 の CSS 解釈バグ他なのだけど、それが Mac 版 Opera 6 でも同じようにバグ持ちかどうかをチェックしてみたです。それによると、いくつかは持ち越されてるけども、直っているものもある感じ。うーん、正しく解釈するとこもバグってるとこも、各プラットフォーム向け同バージョンの Opera で同じにしてほしーというのは、パンピー利用者のアサハカかな。

確認済みバグ

項目 状況
外部スタイルシート中の2バイト文字を解釈しない バグ確認 (エスケープ文字を使えばOK)
フォントファミリ指定で1フォントしか認識しない バグ確認
text-indentの指定値に左マージンやパディングの値が追加される 正常
leftプロパティが指定された要素ではrightプロパティが無視される バグ確認
list-style-image:none; を無視する バグ確認
ソース中の改行が空白として表示されないことがある バグ確認
二重にメディアを指定されたスタイルを認識しない バグ確認
表セル内要素への折り返し禁止指定がセル自体に作用する バグ確認
ffont-size:100%; が継承されると文字サイズが小さくなる 正常
幅を指定したテーブルセルがテーブル枠からはみ出る 正常?
不正な@charsetの記述があるスタイルシートの全体が無視される バグ確認
擬似セレクタを二重指定しても始めのセレクタしか認識しない バグ確認
ボックスのセンタリング時に上下マージンが無視される 正常
backgroundプロパティで位置の値を2つ指定しないと位置指定が無視される バグ確認
負数マージンを設定した要素内のリンクが機能しないことがある バグ確認
相対配置したインライン要素にz-indexプロパティが効かない バグ確認
border-colorを省略した時の値が常に#000000になる バグ確認
:link, :hoverでの指定内容を:visitedの指定が上書きしない バグ確認
button要素の背景色をtransparentにすると常に#c0c0c0になる バグ確認
幅を明示していないフロートが折り返されない バグ確認
相対配置要素のtopプロパティの%値がpx値で扱われる バグ確認
フロートが常に直前のフロートの下辺より下に配置されてしまう バグ確認
総称セレクタにfont-size:inherit;を指定するとクラッシュする バグ確認

未確認バグ

項目 状況
固定配置した要素内にあるリンクが効かない このテストページでは正常

仕様通りの動作

項目 状況
複数メディアが指定された@importを認識しない Windows 版と同様
overflowプロパティの対応が完全ではない Windows 版と同様
フルスクリーンモードがscreenメディアではない Windows 版と同様
positionプロパティをスクリプトから変更できない Windows 版と同様 (仕様通りの動作じゃ無く実装不備では?)
インライン要素に背景画像を指定できない Windows 版と同様

DOCTYPE スイッチ

DOCTYPE スイッチはしない模様。 MacIE5/WinIE6/Mozilla で過去互換な(仕様どおりではない) CSS 解釈が行われる場面とプロパティでも、仕様通りに解釈。これも Win 版 Opera6 と同様。

JavaScript 実装状況

以下に挙げてるのは、自分的によく使う組み込みオブジェクトやメソッドなど。詳細な物は別ファイルに分離。三日坊主++の部屋(閉鎖中) のコンテンツ「JavaScript for CSS (11)」のテストスクリプト利用。

JavaScript による DOM 操作で要素の生成追加とか内容の置換とかを出来そうな気配があるけど、気配だけで実際には出来ない。スタイルシート配列の操作も Win 版 Opera6 同様ムリ。くそ。

基本的なオブジェクトとか

X document.write(X)
document.body [object HTMLBodyElement]
document.images [object HTMLCollection]
document.applets [object HTMLCollection]
document.links [object HTMLCollection]
document.forms [object HTMLCollection]
document.anchors [object HTMLCollection]
document.implementation [object DOMImplementation]
document.getElementsByTagName function getElementsByTagName() { [native code] }
document.getElementById function getElementById() { [native code] }
document.getElementsByName function getElementsByName() { [native code] }
document.createElement function createElement() { [native code] }
document.createTextNode function createTextNode() { [native code] }
document.appendChild function appendChild() { [native code] }
document.insertBefore function insertBefore() { [native code] }
document.documentElement undefined
document.defaultView undefined
document.styleSheets undefined

他ブラウザの独自拡張モノ

X document.write(X) document.write(X) (IE5.0詐称時)
document.layers (NN4.x 独自拡張) undefined undefined
document.all (IE 独自拡張) undefined [object ElementArray]
obj.innerHTML (IE 独自拡張) undefined undefined
obj.innerText (IE 独自拡張) undefined undefined

(※注) obj = document.getElementsByTagName("H1").item(0)

IE5.0 を詐称してる時のみ、document.all 関連オブジェクトが使用可能になる。 Win 版と同様。

DOM のサポート状況

実は未実装でもとりあえず true を返すというウソを、ついてるモノがあるかもしれない。

モジュール X document.write(X)
DOM1 XML DI.hasFeature("XML","1.0") false
DOM1 HTML DI.hasFeature("HTML","1.0") false
DOM2 Core DI.hasFeature("Core","2.0") true
DOM2 XML DI.hasFeature("XML","2.0") false
DOM2 HTML DI.hasFeature("HTML","2.0") true
DOM2 View DI.hasFeature("Views","2.0") false
DOM2 StyleSheet DI.hasFeature("StyleSheets","2.0") false
DOM2 CSS DI.hasFeature("CSS","2.0") false
DOM2 CSS2 DI.hasFeature("CSS2","2.0") false
DOM2 Event DI.hasFeature("Events","2.0") true
DOM2 User interface Event DI.hasFeature("UIEvents","2.0") true
DOM2 Mouse Event DI.hasFeature("MouseEvents","2.0") true
DOM2 Mutation Event DI.hasFeature("MutationEvents","2.0") true
DOM2 HTML Event DI.hasFeature("HTMLEvents","2.0") true
DOM2 Traversal DI.hasFeature("Traversal","2.0") false
DOM2 Range DI.hasFeature("Range","2.0") false

(※注) DI = document.implementation

UA 名偽装

これも Win 版と同じ感じ。どの偽装パターンを選んだときも Opera 6.0 の文字は必ず入るです。完全に素姓を隠したウソをつける iCab のような行儀悪さは無い模様。

Identify as Opera
Opera/6.0 (Macintosh; U) [en]
Identify as Mozilla 5.0
Mozilla/5.0 (Macintosh; U) Opera 6.0 [en]
Identify as Mozilla 4.78
Mozilla/4.76 (Macintosh; U) Opera 6.0 [en] (なぜか 4.76 。大差ないけど。)
Identify as Mozilla 3.0
Mozilla/3.0 (Macintosh; U) Opera 6.0 [en]
Identify as Internet Explorer 5.0
Mozilla/4.0 (compatible; MSIE 5.0; Macintosh) Opera 6.0 [en]

Copyright © 1998-2006 ALIMIKA SATOMI/NYAN-NYAN-HANTEN.Created: 2002/09/27, Last-modified: 2002/12/16