2010-01-01から1ヶ月間の記事一覧

JavaScript で C++ っぽいクラスを実装してみた

js で、C++ ライクなクラス コンストラクタ(init)とデストラクタ(fin)が使える 生成は 親親⇒親⇒子, 廃棄は子⇒親⇒親親 の順で実行 デストラクタ(fin)を明示的に呼ぶと、インスタンスの全てのプロパティが null で上書される(使えなくなる)。 window.onunload …

レンダリングに使われているフォントと、ブラウザで使えるフォントを取得する

js

「あのdiv要素は、どのフォントでレンダリングされているの?」「どのフォントがブラウザ上で利用可能なの?」といった基本的な情報が、CSS や CSS API からは(残念ながら)取得できません。 /* 実際に使われるフォントは一体どれなの? */ font: 24pt 'メイリオ…

catchステートメントでは適用されますが、throwステートメントでは適用されません。

これは、IE で throw "hogehoge" と記述した場合に発生する「構文エラー」のメッセージです。 正しく例外を発生させるには、 throw new Error("あっぷるあっぷる") のように記述してください。 window.onerror = function(errorMsg, url, lineNumber) { aler…

とある最短のIE判定コード

ちょっと前まで、IEかどうかを判別する世界最短のコードは、「IEは垂直タブ(\\v)を理解しない」バグを利用した以下のコードでしたが、 '\v'=='v' // 9byte via Ajaxian その後 7byte 版が登場し、去年まではこれが世界最短とされていました。 !+"\v1" // 7by…

type detection

js

このエントリは、http://d.hatena.ne.jp/uupaa/20091006 の続きです。 alert(Object.prototype.toString.call()) Firefox3+ [object Window] IE6+ [object Object] Google Chrome4 [object global] Safari4 [object DOMWindow] iPhone3.1.2 [object DOMWindo…

一部ブラウザから strokeText や fillText のサポートを削ります(ダイエット)。

Canvas Text API を実装していないブラウザ向けに、JavaScriptライブラリ側で機能を提供してきましたが、シェア低下や公式サポート終了により、その必要も無くなると判断しましたので、以下の機能を、uupaa.js ver 0.7 から除去します。 Google Chrome2 (Chr…

Array.concatで配列のクローン(コピー)を作成する

JavaScriptで配列のクローンを作成しようとして、悩んでいる方もいらっしゃるようですが、 以下のように、for ループや再帰なコードを手書きする必要はなくて、Array.concat() で配列のクローンは作成できます。 Array.prototype.clone = function(){ return…

Safari4 で switch〜case を速くする

Safari4 の switch 〜 case 文は、型を統一することで実行速度が大きく変化します。これを switch (a) { case "a": case 1: } こうしましょう。 switch (a) { case "a": case "1": // 1 → "1": } これだけで、2倍速です。 http://pigs.sourceforge.jp/blog/2…

Web Storage の残容量を調べてみた

js

Web Storage に保存可能なデータ量を計測してみました。 Browser Max Firefox3.5.3 5MB Firefox3.6β5 4.99MB iPhone 3.1.2 2.49MB Safari4 50MB以上 Chrome 4 2.49MB IE8 2.22MB Opera10.50 2.49MB (バッド)ノウハウ iPhone で容量オーバーを回避する 既存の…

uu.local take2

安全性重視で、色々と書き直しました。 最大容量を返す、uu.local.size() を追加 ペア数を返す、uu.local.pairs() を追加 uu.local.set(key, value, safe = 0) に 第三引数(safe)を追加 書き込み成功で true, 失敗で false を返します。 safe = 1 なら、over…

HTML5 Web Storage-- な機能を uupaa.js に実装してみた

Cookieよりも大容量のデータをクライアントサイドに保存する仕様。それが HTML5 の Web Storage です。 Web Storage はまだ策定中です。Firefox3.5+, IE8+, Safari4+, Opera10.50+ など最新のブラウザでは既に利用可能ですが、「何年も待ってられない、今す…

Conditional Selector

コンディショナルセレクタは、html.className に【jsが使えるか】【先進的なブラウザか】【メジャーなブラウザか】【どのブラウザか】【どのOSか】といった情報を設定します。約半年前に作成したものをベースに色々と修正しました。 uu.consel.js // Conditi…