2008-01-01から1年間の記事一覧

Opera と Firefox3.1で DOM Element Traversal Module が使える

指摘を受けて、記事を修正しています。 document.implementation.hasFeature("Traversal", "2.0"); が true を返す環境なら Element Traversalが使える → hasFeature("Traversal") では Element Traversal が実装されていることは確認できない。 DOM Element…

命名規則を一部修正します。

uupaa.js (ver 0.7) からは、こんな感じにします。 change naming style クラス名の命名規則を camelCase から Java スタイルに変えます。 変えるのはクラス名だけです。メソッド名等は camelCase のままです。 uu.klass.className → uuClass.ClassName ----…

uupaa.js の設計

uupaa.jsの設計は結構だめな部分があります。自覚してます。言われる前に書きます。 自覚している箇所については、強引にリライトしていきます。設計や実装で、心がけているのは、 手続き指向の低レベルな関数をまず作成し、ドメイン(ネームスペース)でまと…

Effectの再実装(Tweenの実装)がだんだんと形になってきた。

Tweenを実装するにあたり、いろいろと探りつつ設計をしています。 肝となる、Tweenの演算周りは、Robert Penner's easing equations を使わせてもらっています。現時点の実装はこんな感じ(Firefoxで見てね)。 http://uupaa-js.googlecode.com/svn/trunk/demo…

Effectの再実装(リアルタイム→プリレンダ)

easingを組み込んだEffectがほしいので実装を開始しました。今までは、現在の状態を元に次の状態を演算で(リアルタイムに)求めていましたが、 あらかじめ演算した結果(プリレンダ)を元に描画を行う方式に変更します。骨子はこんな感じ。 uuclass.Easing = {}…

IEのsunsetエフェクトにも中央に吸い込まれる効果を追加したい

メインの開発PCが帰ってくるまでは、Vistaでガマン中。uu.module.effect.sunset() は IEで動作するときに限り、中央に吸い込まれるような効果がありません。 今回は「実装しようとしたけどダメだったよ」日記です。sunsetエフェクトは http://uupaa-js.googl…

HHKB + vi + LAMP が使えればOSなんて何でもイイ(Vista以外なら)。

uupaa.js 開発用のノートPCを修理に出すことに。 帰ってくるまでに10日ほどかかるらしい。残る開発用PCは Vista なんだけど、Vista で カイハツ? イ・イヤスギル…新型MacBookを「ポチッ」と買っちゃいそうになるので、買わずに済む理由を探してます。

uupaa-selector.js version 1.2 をリリースしました。

Ver 1.1との違い XMLDocument, HTMLDocumentを区別し動作する HTMLDocument(content-type: text/html) なら タグ名の大文字/小文字を無視して要素を検索するが、XMLDocument(content-type: application/xml or application/xhtml+xml or text/xml)なら区別す…

HTMLDocument と XMLDocument を見分ける方法

HTMLDocument と XMLDocument を見分ける方法を模索していました。2008-10-12追記: 内容を大幅に更新しました 何がしたいのか uupaa-selector.js version 1.2では、HTMLDocuemnt と XMLDocument で、CSSセレクタの挙動が変化します。 HTMLDocuemnt なら 小文…

uupaa-selector.js version 1.1 をリリースしました。

uupaa-cssselector.js を改名し、機能を大幅に強化したものを uupaa-selector.js としてリリースし直しました。2008-10-11追記: uupaa-selector.js version 1.2 をリリースしました。 - latest log uupaa.js(ver 0.7)の実装をベースに、 getElementById() ge…

JavaScript の高速化その2 「全てを疑い、自分の目で確認すること」

こういう泥臭い資料作りもやってるので、一応書き残します。 問題1. array.length へのアクセス var ary = new Array(100000); な配列があるとします。IE6環境下で、配列の長さを求める方法を、早い順に並べてください。TEST1. a.length; TEST2. var L = "le…

uupaa.jsの開発開始から6ヶ月が経過。ここから楽しいはず!

2008/04/01の開発開始から6ヶ月が経過しました。 この6ヶ月で、クロスブラウザを実現するための基礎資料もかなり出揃い、高速な足回りも実装することができました。 今後はコア部分の開発よりも、Webサイトで多用される機能やユーザが欲しがる機能(見栄えやU…

世界最速のCSSセレクタ(getElementsBySelector とか querySelectorAll みたいなもの)をリリースしました。

http://code.google.com/p/uupaa-js-spinoff/2008-10-11 追記 uupaa-selector.js version 1.2 をリリースしました。 - latest log おまたせ 最新のjQuery(1.2.6)よりも早く、jQueryと比較にならないほどの高い精度で正しく動作するCSS3セレクタの実装(uupaa-…

uupaa.js 0.7 1001%+ Faster! - CSSセレクタの精度と速度でjQueryを超えてみた。

CSSセレクタのチューン開始から、えーと… 今は、20時間目かな(もうそんなに…)20時間前に立てた目標は、IE上で動作するjQueryの速度を超えること。 結果発表 uupaa.js 0.6 uupaa.js 0.7(α) jQuery1.2.6 kQuery Prototype.js 1.6.0 3174 317 371 495 2007 uupa…

uupaa.jsのquerySelectorAll相当の機能(uu.css)をもっと高速化

CSSセレクタをチューンしてます。作業開始から4時間が経過し、速度向上ぐあいはこんな感じ(in IE6)。 uuppa 0.6 uuppa 0.7(α) jQuery 1.2.6 Prototype 1.6.0 3161 653 382 2046 途中省略 テストツールとテスト内容は、http://slickspeed.googlecode.com/svn/…

uupaa.js version 0.6 をリリースしました。

変更点: http://uupaa-js.googlecode.com/svn/trunk/CHANGELOG.htm 注意点 version 0.6 では CSSセレクタ(uu.css)を書き直しています。 → querySelectorAll相当の機能を実装してみた(uupaa.jsのCSSセレクタを書き直した) - latest logjQueryと比較した場合に…

こっそりと特定の要素をマーキングし取得する

CSS + JavaScript(uupaa.jsも)を使い、ユーザに悟られないように要素をマーキングし、要素を特定する方法です。昨日までの一連のエントリから、ユーザに知られずに要素をマーキングする妥当な方法がやっと見つかりました。 IE なら ruby-align: center を、…

ブラウザ毎の getComputedStyle の戻り値

currentStyle, getComputedStyle() が返す値を調べています。getComputedStyle() は、描画に使われるスタイルに(近い)値を取得する便利なメソッドです。 currentStyle は IE と Opera で使用できる JavaScript プロパティですが、やる気の無い値(widthで"aut…

JavaScriptでマウスカーソルがポイントしている要素(:hover)を取得する方法

さっき書いたエントリは前フリでこっからが本題。マウスカーソルが乗っている要素を直接取得する関数があったら色々と便利です。ゲームなどにも使えそうですし。 document.elementFromPoint(x, y) とすることで x,y直下の要素を取得できますが、Firefox2 に…

Operaはライブラリ側の創意工夫でなんとか出来ないことが多い

他のブラウザで出来るのにOperaで出来ないこと ユーザーに気づかれないようにスタイルを設定しづらい ブラウザをHackして、本来実装されていない機能を実現するために、CSSを使って要素をマーキングをしたい場合があります。 そのような場合は、ユーザには気…

uupaa.js 0.6 RC1がダウンロード可能になりました。

uupaa.js(ver 0.6 RC1)がダウンロード可能になりました。RC0からの変更は、 uu.readyの再実装 uu.unreadyの追加 となっています。

uupaa.js 0.6 RC0がダウンロード可能になりました。

uupaa.js(ver 0.6 RC0)がダウンロード可能になりました。version 0.6 では、 新しいCSS3 Selector IE6でDataScheme(image/gif)が使用可能に IE6でposition:fixedが使用可能に ModuleReady状態のサポート いくつかのBugFix 等の変更があります。特に問題が無…

IE6 で position: fixed をサポートしました。

uupaa.js(0.6) から IE6 でも position: fixed が使用可能になります。こんな感じのCSSが使えるようになりますよ。 position: fixed; top: 100px; position: fixed; bottom: 5em;em単位で指定した場合は、フォントサイズを変更すると自動的に追従しますし、…

なめらか卵のとろけるプリン

今日はおもに、Effectのなめらかさを向上させる方法を模索していました。Effectはタイマードリブンです。タイマーから定期的なタイミングで呼ばれ式を評価し結果を描画します。 タイマーを細かく設定すれば理論上のなめらかさは向上しますが、実際にはブラウ…

今日はOFF日

家族をつれて小岩井農場へ。 マフマフなメェメェに遊んでもらいました。

querySelectorAll相当の機能を実装してみた(uupaa.jsのCSSセレクタを書き直した)

ここ数日は、uupaa.js の CSSセレクタ部分を書き直してました。 CSSセレクタ部分とは、jQuery("div > p") とか $$("#hoge~span") を解釈し要素を選択する機能です。document.querySelectorAll() としても標準化されています。uupaa.js(ver 0.5)まではCSSセレ…

Firebug 1.2.1 がリリースされています。

https://addons.mozilla.org/ja/firefox/addon/1843β版を手動でインストールしていた方は、自動更新のチェック対象からもれているかもしれません(私がそうでした)。

querySelectorAll

古いブラウザ向けに、getElementsBySelector いわゆる querySelectorAll を実装しようと、色々と取り組んでいるんですが、いくつか問題が。 なんかきれいに実装できない。 "E + F" と "E ~ F" のFは先読みしたほうがいいのか、しないほうがいいのか :first-l…

古いIEを共存させてみる試み

古い IE で uupaa.js を動かすとどうなるんだろう? とちょっと気になったので、 IE7とIE6を共存させる方法:まとめ | コリス で紹介されている「IE7をベースに、IE6をスタンドアローンで起動する方法:その1」を試してみました。 IE6が入っているWinXPに、I…

最近のOperaってデグレードしてませんか?

例えばマルチプルセレクトのセレクトボックスで、ドラッグしたままアイテムをずずずって選択し、セレクトボックスの外に移動してドラッグを止めると、アイテムの選択状態は変化しているのに onchange イベントが発生しないとか。 # Opera9.2xまでは問題なか…