Opera 6 for Mac の正規版がやっとこリリースされました。とすればやはり(?)気になるのは Web 標準仕様の実装状況。そのへんをあれやこれやを調査しましたですよ。
いちおうこのページはギジュツ資料とかゆー物のつもりらしーので、使用感とかは触れませぬ。そのへんは日記にゴチャゴチャ書いてるのでそっちにて。(→ねこめしにっき:Opera6 for Mac 正規版がリリースされちゃった)
注:これらは 6.0 での状況です。今後まだ進展があるかもしれませぬ。テストは MacOSX 10.2.2 上で実施。
Win 版とほとんど変わらない感触。いやちゃんと調べたわけじゃないけど。感触だけでモノ言ってますよこの人。
とりあえず abbr
や q
あたりを解釈できるし、現代のブラウザとしては合格ラインと見ていいのでわ。…おいおいテキトーだな。いちお Opera version 6 supports HTML 4.01
てことになっとりますが、なら XHTML1.1 まではフツーにイケるわけで。
あ、ソース中でマーク区間を使ってるとき、閉じてるトコの "]>"
とかが見えちゃいますね。ありゃりゃ。
…というか、XML としての HTML である XHTML 方面だけの話しかしませんが。本格 XML はぼく自身まだまるで自分のモノとして生活しとりませんから。うへ。
application/xhtml+xml
の MIME タイプで送られてきた XHTML 文書を表示できまふ。そのときは XML として処理されてるよーで、ワザと文法ミスした XHTML 文書を食らわせてみたら当然のよーに XML パースエラーが出たです。 Mozilla と同じ。
ただし HTTP_ACCEPT には application/xhtml+xml
が無い模様で、コンテントネゴシエーションで application/xhtml+xml
と text/html
を切り替えてるリソースの場合、受信されるのは後者になる模様。
感触的には 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 版でクラッシュするバグ) | 同じく死亡 |
上記リンク先で挙げられてるのは Windows 版 Opera6 の CSS 解釈バグ他なのだけど、それが Mac 版 Opera 6 でも同じようにバグ持ちかどうかをチェックしてみたです。それによると、いくつかは持ち越されてるけども、直っているものもある感じ。うーん、正しく解釈するとこもバグってるとこも、各プラットフォーム向け同バージョンの Opera で同じにしてほしーというのは、パンピー利用者のアサハカかな。
項目 | 状況 |
---|---|
固定配置した要素内にあるリンクが効かない | このテストページでは正常 |
項目 | 状況 |
---|---|
複数メディアが指定された@importを認識しない | Windows 版と同様 |
overflowプロパティの対応が完全ではない | Windows 版と同様 |
フルスクリーンモードがscreenメディアではない | Windows 版と同様 |
positionプロパティをスクリプトから変更できない | Windows 版と同様 (仕様通りの動作じゃ無く実装不備では?) |
インライン要素に背景画像を指定できない | Windows 版と同様 |
DOCTYPE スイッチはしない模様。 MacIE5/WinIE6/Mozilla で過去互換な(仕様どおりではない) CSS 解釈が行われる場面とプロパティでも、仕様通りに解釈。これも Win 版 Opera6 と同様。
以下に挙げてるのは、自分的によく使う組み込みオブジェクトやメソッドなど。詳細な物は別ファイルに分離。三日坊主++の部屋(閉鎖中) のコンテンツ「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 版と同様。
実は未実装でもとりあえず 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
これも Win 版と同じ感じ。どの偽装パターンを選んだときも Opera 6.0 の文字は必ず入るです。完全に素姓を隠したウソをつける iCab のような行儀悪さは無い模様。