タグ

ブックマーク / uupaa.hatenadiary.org (9)

  • JavaScript で、画像本来のサイズ(幅, 高さ)を取得する方法 - latest log

    Opera で DOM Mutation Event を使用するコードを追記しました。 まとめを追加しました。 Opera パート2に取得できないケースが見つかったため、パート3 を追加しました。 rhino.jpg(幅:300px, 高さ:227px) を、 <img id="rhino" src="rhino.jpg" width="100" height="75" /> と、100 x 75 で表示している場合を例に、画像来のサイズを取得する方法をご紹介します。 Firefox, Safari, Google Chrome なら image.naturalWidth と image.naturalHeight を利用します。 image.naturalWidth と image.naturalHeight の初期値は 0 です。画像の読み込みが完了した時点で適切な値に更新されます。

    seiunsky
    seiunsky 2011/01/07
    画像本来のサイズを取得できる
  • uupaa.js と jQuery を機能を中心にざっくりと比較 - latest log

    Classの継承についてサンプルを追記しました。 jQuery の特徴的な構文を uupaa.js で表現する方法を追記しました。 デバッグ支援機能について追記しました。 特徴 uupaa.js jQuery 初版 version 0.1 (2008-06-07) version 1.0 (2006-10-27) 最新版 version 0.8 (2010年末を予定) version 1.4.2 (2010-02-19) ライブラリの目標 WebOSのフロントエンド 不明 来の用途 WebOS / WebApp DOMの操作とサイトの装飾 使われ方 導入実績なし 小〜中規模サイト / ポータルサイト等 想定されるコアユーザ層 エンジニア デザイナー / コーダー / エンジニア 名前空間 uu (1つ) jQuery と $ (2つ) ライブラリによる識別子プリフィクスの予約 uu また

    uupaa.js と jQuery を機能を中心にざっくりと比較 - latest log
    seiunsky
    seiunsky 2010/09/08
    すごいいいいいいい
  • uupaa.js の これまでと これから - latest log

    uupaa の中の人は28ヶ月前にペットショップからウーパールーパーを2匹連れ帰りました。 同じ日に、「作れども作れども UI 速くならず、じっとコード見る」な感じから脱却するため、中の人は、"uupaa" という固有名詞がWeb上に存在しないことを確認し uupaa.js というオレオレライブラリを作りはじめました。 なぜ当時、百花繚乱な他のjsライブラリを使うことを考えなかったか… 飲みながらじゃないと言えないっ JavaScript勉強前(2年ぐらいまえ)は… JavaScriptを真面目に勉強するまえだと、これで精一杯でした CoverFlow - http://pigs.sourceforge.jp/old_uupaa/uupaa.js.0.3.18/demo/coverflow/coverflow.htm 画像が表示されない場合は何度かリロードしてください(当時はこういうのでも

    uupaa.js の これまでと これから - latest log
    seiunsky
    seiunsky 2010/06/23
    すげー
  • ライブラリの一部でありながら単体利用も可能にする工夫 - latest log

    140文字を超えちゃうので、こちらで。 JavaScriptなコードを書いてると「このへんの処理はどこにも依存してないから、特定のライブラリの一部ではなく、単体でロードしても使えるような部品としてまとめられたらなぁ」とか「でも、ライブラリの一部として利用する場合にグローバルネームスペースを汚染するのはダメだよなぁ」と、考えたことはありませんか? window.uu 以下をライブラリのネームスペースとして利用している uupaa.js では、このような工夫をしています。 // === uu.base64 / window.base64 === (function(namespace) { namespace.base64 = { encode: base64encode, // base64.encode(data:String/ByteArray, // toURLSafe64:Boole

    ライブラリの一部でありながら単体利用も可能にする工夫 - latest log
    seiunsky
    seiunsky 2010/05/25
    なるほどなるほど
  • +new Date を Date.now() に差し替えると200〜400% 高速化も - latest log

    CSS を利用したアニメーションでは、必ず現在時刻を取得するコードが入ります。 var now = +new Date; ECMAScript-262 5th では Date.now() が新しく追加されました。 Date.now() は +new Date と同じ機能(現在時刻を数値で返す)を持ちながら、new の必要がないため速そうです。 ベンチ <!doctype html><html><head><title></title> </head><body> <script> window.onload = function() { Date.now || (Date.now = function() { // Date.now が実装されていないブラウザ用の実装 return +new Date; }); job1(); job2(); } function job1() { var

    +new Date を Date.now() に差し替えると200〜400% 高速化も - latest log
    seiunsky
    seiunsky 2009/12/24
    すげー。つか、 + を使うやり方、初めて知った。
  • 理由がない限り、Array.join("") による文字列連結は使わないほうがいいみたい - latest log

    JavaScript の勉強を開始したときに「文字列の連結には Array.join() を使え」といった記事を見た覚えがあります(ソース失念したけど、 Operaの技術文書だった気がする ⇒ IE の技術文書だったかも)。 一年ほど信じてて、念のためベンチとってみたら「うそやーん」でした。ってお話。 ベンチの条件は、 3種類の文字列連結方法を試す 1. + Operator 2. String.concat() 3. Array.join("") 文字列の要素数を 11個 と 55個で試す <!doctype html><html><head><title></title> </head><body> <script> window.onload = function() { var now = +new Date, lp = 100; while (lp--) { job(); } d

    理由がない限り、Array.join("") による文字列連結は使わないほうがいいみたい - latest log
    seiunsky
    seiunsky 2009/08/28
    Array.join で連結したほうが早いと思ってた。実は最適化も要因の一つだったかも。ようするに、厳密なベンチマークではなく、”実際書くコードベースでの”ベンチマークだと違うとか。
  • amachang の 「一行で IE の JavaScript を高速化する方法」を掘り下げてみた - latest log

    2009-11-12 ナビ子記法について追記しました 文 今日は、amachangさんの記事 http://d.hatena.ne.jp/amachang/20071010/1192012056 を 1mm だけ掘り下げ、IE 以外のブラウザでも document へのアクセスを速くする方法がないか、色々試してみます。 # 記事自体はずいぶん前に書き上げてたけど、公開するの忘れてたんだな。 C系を追加しました。C系は「ネストしたスコープからグローバル変数にアクセスするとどうなるか?」がテーマです。 試したこと 以下は様々な方法で document へのアクセス速度を計測します。 A系では、非日常的な方法で測定し、B系では実際の用法に近い形で測定します。C系では何重にもネストしたスコープから、グローバル変数にアクセスするとどうなるかを測定します。 A系 A0 は、素の document に

    amachang の 「一行で IE の JavaScript を高速化する方法」を掘り下げてみた - latest log
    seiunsky
    seiunsky 2008/12/31
    すごい!!
  • JavaScriptの高速化3 - Hashによる検索を活用することで、ドラッグをもっとスムーズに - latest log

    IE6のベンチスコアを追加 補足を追加 アイコンやウインドウをつかんでずずっと移動する。 この動作をもっともっとスムーズにするために、何ができるか考えてました。 以下はサンプルコードです。 uuClass.MyDrag = uuClass.Generic(); uuClass.MyDrag .prototype = { construct: function() { // ウインドウを包括するオブジェクト this._frame = uu.id("WindowFrame"); // ウインドウのタイトル部分でmousedownされたらhandleEventを呼び出す。 uu.event.set(this, uu.id("WindowTitle"), "mousedown"); }, handleEvent: function(evt) { uu.event.stop(evt); // イベ

    JavaScriptの高速化3 - Hashによる検索を活用することで、ドラッグをもっとスムーズに - latest log
    seiunsky
    seiunsky 2008/11/01
    高速化について
  • HTMLDocument と XMLDocument を見分ける方法 - latest log

    HTMLDocument と XMLDocument を見分ける方法を模索していました。 2008-10-12追記: 内容を大幅に更新しました 何がしたいのか uupaa-selector.js version 1.2では、HTMLDocuemnt と XMLDocument で、CSSセレクタの挙動が変化します。 HTMLDocuemnt なら 小文字の a タグ と 大文字の A タグ は一緒。 uu.css("a"); で <a>, <A> がヒットする XMLDocument なら タグの大小は区別する。 uu.css("a"); なら <a> のみヒットする これを実装するためには、XMLDocument と HTMLDocuemnt を見分けたうえで動作する必要があります。 どこを調べれば、XMLDocument を区別できるのか調べてみた text/html, elm = d

    HTMLDocument と XMLDocument を見分ける方法 - latest log
  • 1