以下、覚え書きです。
一般的に、Internet Explorerでベクトルグラフィックスを扱いたい時はVMLを使います。
これをInternet Explorer8のStandards mode(標準モード)で使う時には、気をつけないといけない点があります。
参考資料のレンダリングモードを参考に、meta要素でそれぞれIE=7, IE=8を指定して、とほほのVML入門のサンプルをJavaScriptで実装したのが以下のページです(IE以外のブラウザでアクセスしても何も起きません)。
先日リリースされたIE8正式版で閲覧すると、前者は線が描画されますが、後者は線が描画されません。違いはmeta要素の指定だけです。
どうしてモードの違いで動かなくなるのかさっぱり分からなかったんですが、
上の記事の「Generic CSS Prefix Selectors」と云う見出しの付いたところに書いてありました。
「v\:*」っていうv\:に続く全てに対する宣言は使えなくなっているので、個別に宣言しろってことみたいです。
さっきの例だと、
ss.cssText = "v\\:*{behavior:url(#default#VML)}";
これはIE8 Standards modeでは解釈してくれないので、v:lineとv:polylineを使いたければ、
ss.cssText = ["v\\:line", "v\\:polyline"].join(",") + "{behavior:url(#default#VML)}";
それぞれ宣言してやる必要があるようです。試しにやってみたらIE8 Standards modeでも線が出ました。
IE8はかなり良いブラウザに仕上がってると思うんですが、今までのバージョンで動いていたものがいきなり動かなくなって困る事例が、これからポツポツと出て来るのかなぁという感じです。
レンダリングモードごとのdocument.compatModeの値も気になって調べたのでメモっときます。
// IE8 Standards mode (document.documentMode === 8) (document.compatMode === "CSS1Compat") // IE7 Standards mode (document.documentMode === 7) (document.compatMode === "CSS1Compat") // Quirks mode (document.documentMode === 5) (document.compatMode === "BackCompat")
各モードの名前の通りの結果となりました。
IE8でもQuirks modeの時は、引き続きレイアウト計算には注意が必要ですね。
最近のツッコミ
参号館 日記(ariyasacca)
メルしましたが、是非他県版も見たいのでゲッチュしてください!新潟市民でも新潟版を見るのは至難の業ですが…。
ゲットできたら家宝にします!