Hatena::Groupweb

vantguarde

 | 

5.5

HTML5パーサの検出

| 18:04

さて、「text/htmlでSVGが表示できた、じゃあそれはHTML5パーサを搭載してる」なんてのは怪しいもんです。IE9はHTML5 parserではありませんがインラインSVGには対応してますし。

だから、innerHTML<svg></svg>つっこんでそのnamespaceがSVGのそれかどうかを確かめるようなテストでHTML5パーサの検出を決めるのって、不十分なんですよね。HoneycombのWebKitの場合は、WebKitのバージョン的にHTML5パーサが入ってることからじゃあインラインSVG見られるだろうという想定で確かめただけなので、すべてに当てはまるわけじゃない。

とはいえ、「こういう挙動だから、これは間違いなくHTML5パーサだ」というひとつの機能って存在してないのかなと。各ブラウザがこれまで持ってたパース処理とどこかで互換性をとるように作ってるわけで、固有の挙動がありすぎると、それに依存したコンテンツに影響がでてくるので、それはそれで問題なわけです。なので、HTML5パーサを検出するには、複数のテストを組み合わせた結構長めなものになるんじゃないかなと。

そんなことを前のエントリを書きながら思っていたんですが、検索したらHenri Sivonenさんがそんなものを書いてました。しかも去年ブックマークしていたという。

ここで使われてるdetect-html5-parser.jsがそれです。やっぱり複数のテストをして判断してますね。<div<div>をつっこんでdiv<div要素になるかとか、textareastyle中の<!--の扱いとか、いろいろ面白そう。

ある機能の検出にしては大きいし、HTML5パーサをちゃんと検出する意義がそんなにないのが、Modernizrとかに入ってない理由なのかなあ。

 | 
Contact: @vant / lepetitcroissant@gmail.com.