xml |
Opera Nextがアップデートされたんですが、XMLのパースに失敗したら自動的にHTMLとしてパースしなおすようになったそうです。
Operaはエラーを出しつつも「HTMLとして解釈しなおす?」的なリンクがあって親切だったんですよね。それを自動でやっちゃうと。オフにする設定もあるのかな。居る人がどれだけいるのかという話ですが…
あ、この「XML」はapp/xml系な文書すべてなのでしょうか、それともXHTML限定なのでしょうか。どうなんだろう。
DOM |
IE10のスタンドアローンなPPかベータだしてよ!
さて、Keynoteを見てて、“Touch First”だとか言ってるしIE10でもタッチイベントなデモをやってておーって思ったんですが、どんなイベントを実装してるのかが気になりました。
W3CだとTouch Eventsなんて仕様がありますが、これはマルチタッチ(ジェスチャーって言えばいいのかな?)に対応してません。なのでそれをサポートしてたとしても足りないわけです。IE10のデモだとうりうりと画面を何本かの指で押してた感じなので、何かしらそういう仕組みがあるはず。なんだろう。
って、デモが公開されてるんだから、それを見ればいいんですね。ごそごそ。
ありました。http://ie.microsoft.com/testdrive/Graphics/TouchEffects/Demo.jsの66行目から。
// Determine correct events to register for if(navigator.msPointerEnabled) { downevent = "MSPointerDown"; upevent = "MSPointerUp"; moveevent = "MSPointerMove"; document.addEventListener("MSPointerCancel", function(e){ removeTouchPoint(e); }, false); document.addEventListener("MSGestureInit", function(e){ e.preventManipulation(); }, false); document.addEventListener("MSGestureHold", function(e){ e.preventDefault(); }, false); } else { downevent = "mousedown"; upevent = "mouseup"; moveevent = "mousemove"; }
navigator.msPointerEnabledという妙なプロパティでサポートを検知してますね。イベントは確認できる範囲で6つ。
MSPointerDownMSPointerUpMSPointerMoveMSPointerCancelMSGestureInitMSGestureHoldmouseでもなくtouchでもなくpointerと。マウスイベントも同じイベントをimplementしてるとかそういうモデルになってるんでしょうか。WebKitのtouchstartなどをサポートしなければならないはめになったりしないんだろうかとも思ったりしますが、どうなのでしょうね。
このpointerというの、Win8でも共通の概念なんですよねえきっと。さっぱりわからんちんです。ただ、タッチ/非タッチなものでtouchstart, mousedownとふたつのイベントを書く必要がないのは楽かなと。
2011-09-22 追記:
IEBlogにまさにこれを扱った記事が投稿されました。
g:subtech:id:mayukiさんのコメント(ありがとうございます!)にもあるとおり、mouse, touch, penを含めた抽象的な形式を"pointer"と呼んでいるようです。event.pointerTypeで形式もとれるようですが。
あとズームやパンを禁止するのに–ms-content-zooming: noneなんてプロパティがありますね。metaのuser-scalableよりは扱いやすい気はしますが、ここらへんもっと良い感じにできないかしら。
css |
Windows Phoneが発売されましたが、「スマートフォン」と一括りにされて既存のスマートフォン用サイトに飛ばされたりしたとき、問題になるものがちらほら出てくるんじゃないかと思うので、ちょっと書いておこうかなあと。
タイトルで説明できてるんで冗長ではあるんですが、まあこういうことを言いたいのです。
.nanka { color: white; background: -webkit-gradient(linear, left top, left bottom, from(darkgray), to(gray)); }
これで完結してるCSSが結構多いんですよね。-moz-とかが書かれてることもありますが、それは置いといて。
これだと、WebKit以外だとbackgroundが無視されちゃうんでWebKit以外で文字が見えなくなります。*1
で、ただ背景色を書けだと、なぜかこう書いてしまう場合もあるらしく……
.nanka { color: white; background: -webkit-gradient(linear, left top, left bottom, from(darkgray), to(gray)) gray; }
backgroundにしちゃってるケースです。これも当然WebKit以外だと悲しいことになります。なのでbackgroundに含めないで(含めてもいいですが)、backgroundのあとにbackground-colorで指定します。
.nanka { color: white; background: -webkit-gradient(linear, left top, left bottom, from(darkgray), to(gray)); background-color: gray; }
背景色には、文字色とコントラストのとれるものであれば何でもいいかなと。基本的にはグラデーション内の色が楽だとは思います。
というお話でした!
あ、-moz-, -ms-, -o-も書いておけばそうしなくてもいいってわけじゃないです。ブラウザ売ってるわけじゃねぇんだから「このブラウザで見てください」はありえんよ。
っていう話です。*2
*1:継承した背景色が白に近い場合の話ですが、かなり頻発するかなと。
*2:元発言の文脈は違いますが。参考: http://togetter.com/li/178609
UAはMacだとMozilla/5.0 (Macintosh; Intel Mac OS X 10_7) AppleWebKit/534.48.3 (KHTML, like Gecko) Version/5.1 Safari/534.48.3で、WinだとMozilla/5.0 (Windows NT 6.1) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50らしいです。あれ、Windows版のほうが新しい…
とはいえ、Chrome devがWebKitの535.1とかなんで、だいぶ新しいのを積んでますね。よかった。
placeholderの挙動が変わって、iOSネイティブのものとおなじになった。
window.performanceとかがundefined
browser |
もうAuroraは7ですか。はやいなあ。
無駄な新しもの好きなのでAurora使いたいんですけど、アイコンが好きじゃないんですよね。Firefoxのと粒度が違いすぎて違和感があるというのもあるし。うーん。
それはそうと、Auroraはもう7ですし、6もBetaが出ました。しかしFirefox 5へのアップデートはまだmoz.dev.planningで議論されてるくらい結構なおおごとになってしまったので、今後どうなるんでしょうね。
とはいえ、おおごとになりすぎた感もしなくないというか、たとえばFirefox 4.1とかそんなバージョンでFirefox 5が出てたらここまでにはならなかったのかなあと。「メジャーバージョンアップにはUIの変更があるべき」みたいなコメントもあったりしますし、バージョン番号に囚われすぎるのも困りもの。
ただ、リリース間隔が短くなるのはバージョン番号に限らず面倒なことではありそうです。さらに、Firefoxはこれまでのやり方を変更して早めているので、戸惑いは避けられない。ぼくも、Fx 3.5やFx 3.6からのアップデートがどうなるのとか、自動アップデートはとか、いまいちよく分かってないことがあります。Mozilla JapanはFAQを出していてとても好感を持てたのですが、もっとそういう説明が事前にあるとスムーズだったかなとは思います。
しかし、リリース間隔が長いと新しい機能とかが使えるまで時間がかかるし、更に速く変化してるWebに対応するには間隔を詰めるしかないとは思うのですよね。
http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.input(v=VS.85).aspx
実際のイベント的にはPointerPressed, PointerReleasedで名前が微妙に違う…。
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.core.corewindow(v=VS.85).aspx
SilverlightやWPFではタッチイベントは別になってたので区別なく扱えるようにしたのかもしれないですね。