2009-06-24

ブラウザの座標再び

CSSOM View Moduleを見ていたら、WindowView interfaceに、面白いプロパティがたくさん見つかった。

たとえば、 pageXOffset/pageYOffsetは、ウインドウのスクロールを、ピクセル数で返す。

また、screenX/screenYというプロパティもあり、これはブラウザの、ディスプレイ上の位置を返す。

他にもscreenインターフェースが規定されている。この歴史的なインターフェースの存在は知っていたが、W3Cにおいても規定されているとは知らなかった。

あと、良く見たら、マウスイベントのoffsetX/offsetYも、ここで定義されていた。ただし、前述の通り、まともに実装しているのはIE8しかないという事実がある。padding boxからの相対位置を返すべきなのに、ボーダーも含めていたり、そもそもpaddingすら無視していたりという実装がある。しかも、規格に従うならば、padding分を差し引かなければならない。面倒だ。さらに、pageX, pageYも規定されていた。なんだ、ここで規定されていたのか。やれやれ。getBoundingClientRect()を使うまでも無かったわけだ。W3Cで規定されているならば、使うのに遠慮はいらない。

それにしても、このあとから付け加えるような形で、一部の規格が点でばらばらの文書で規定されているのは、何とかならないのだろうか。しかも、いまだにドラフト段階だ。

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.