タグ

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

  • IEで透過pngにopacity - latest log

    @nksm さんのつぶやき IE7+で透過pngに対してopacityを指定した時の汚さはなんとかならんかな。IE6はキレイなんだが・・・。 via http://twitter.com/nksm/status/16611637369 を見つけたので、VMLを使って透過pngにopacityを適用する方法を jsdo.it にあげました。 http://jsdo.it/uupaa/IEAlphaPng_x_Opacity 解説 知識として IE6〜IE8では、filter: AlphaImageLoader(src="**.png") で透過png画像を利用できる IE6〜IE8では、filter: alpha(opacity=0〜100)で 画像の不透明度(opacity)を指定できる filter: は一度にひとつではなく、複数指定できる があり、これを踏まえて filter: alp

    IEで透過pngにopacity - latest log
  • 140文字以内でコナミコマンド - latest log

    <script>k="";document.onkeyup=function(e){k=/38384040373937396665/.test(k+=(e||event).keyCode)?(alert(573),""):k.length>99?"":k}</script>137文字

    140文字以内でコナミコマンド - latest log
    wacky
    wacky 2009/12/15
    コナミコマンド(上上下下左左右右BA)の入力を検知する最小クラスのJavaScript。入力されたキーコードを連結して正規表現で判定。
  • 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 です。画像の読み込みが完了した時点で適切な値に更新されます。

    wacky
    wacky 2009/06/03
    JavaScriptで画像の幅と高さを取得する方法。Firefox、Safari、ChromeはnaturalWidth / naturalHeightで。IEはruntimeStyleのwidth / heightで。Operaは非同期でやるか、removeAttribute("width") + DOMAttrModifiedイベントで。
  • 正規表現のベンチマーク(String.match と RegExp.exec のざっくりとした違い) - latest log

    2009-01-12追記 タイトル修正しました。 2009-01-14追記 String.indexOf と RegExp.test のスコアが逆に書かれてていたのを修正しました。 String.match ばかりで、RegExp.exec を使ったことがありませんでした。 ちょっと気になったので色々とベンチマークを取ってみました。 TEST TIMES IE6 Fx3.0 Fx3.1 (JIT) Safari3 Chrome1 (JIT) A. match(/\s*/) vs match(/ */) "aaaaaaaaaaaa".match(/\s*aa\s*/) 1000000 7203 1714 327 2375 2128 "aaaaaaaaaaaa".match(/ *aa */) 1000000 7156 1638 297 2328 2148 B. RegExp.exec vs

    正規表現のベンチマーク(String.match と RegExp.exec のざっくりとした違い) - latest log
    wacky
    wacky 2009/06/01
    JavaScriptの正規表現に関して主要ブラウザでベンチマーク比較。String.matchとRegExp.exec、String.indexOfとRegExp.testなど。
  • いま HTML5::Canvas って使えるの? (HTML::Canvas のサポート状況) - latest log

    Opera の getContext("opera-2dgame") について追記しました。 fillText(strokeText) + pattern, + linerGrad, radialGrag について追記しました。 uupaa-excanvas.js ver 0.3 リリース版に基づき表を更新しました。 uupaa-excanvas.js ver 0.31で、drawImage(canvas, ...) をサポートしました。 先ほど Windows XP 上で調べました。MacLinux だとちょっと違うかもしれません。 # レンダリングの実例はhttp://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.js/DEMO.htmで見れます。 凡例 5: 実装されており他のブラウザの描画結果と互換性がある(

    いま HTML5::Canvas って使えるの? (HTML::Canvas のサポート状況) - latest log
    wacky
    wacky 2009/04/21
    最新ブラウザのCanvasのサポート状況。Firefox3.1β3、Safari 4β、Chrome 2、Opera 10α。IE6 + ExCanvas、IE6 + uupaa-excanvas.jsとの比較あり。
  • IE6で behavior を使わずに DOMNodeInserted をエミュレートしてみる - latest log

    * { behavior: expression(...) }とすると、DOMツリーへのノードの追加を検出できるんだけど、behavior はよく使われるので、他のライブラリとバッティングする可能性が高い。 そこで、behavior を使わずに DOMNodeInserted 相当の機能を実装できないか考えてみた。 <html><head><title>emurate DOMNodeInserted event for IE6</title><style> body * { text-underline-position: expression(onDOMNodeInserted(this)); } .box { border: 1px solid red } </style></head><body><script> function onDOMNodeInserted(elm) { s

    IE6で behavior を使わずに DOMNodeInserted をエミュレートしてみる - latest log
    wacky
    wacky 2009/03/04
    DOMツリーへのノードの追加を検出するDOMNodeInserted相当の機能をIE6向けに実装。
  • ベンチマークを完走させる - latest log

    ベンチマーク中に「なんかビジー。スクリプト止めとく?」なダイアログで、台無しになってしまうことがあります。 今日はそれを回避する設定をご紹介。 IE: レジストリに新しい値を追加することで可能 KEY: HKEY_CURRENT_USER/Software/Microsoft/InternetExplorer/Styles/MaxScriptStatements(DWORD) VALUE: デフォルトが 5000000 なのでそれ以上の値を指定する Firefox: about:configで設定可能 KEY: dom.max_chrome_script_run_time VALUE: デフォルトが 20 なのでそれ以上の値を指定するか、0 を指定する。0 でタイムアウトしなくなる。 Safari: 開発メニューで設定可能 [メニュー] - [開発メニュー] - [Runway JavaS

    ベンチマークを完走させる - latest log
    wacky
    wacky 2009/01/07
    高負荷のスクリプトを走らせてもブラウザの警告ダイアログが表示されないようにする方法。IE/Firefox/Safari向け。
  • 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
    wacky
    wacky 2008/12/31
    documentオブジェクトへのアクセスを高速化する手法。「var _doc = document;」でグローバル変数にキャッシュし、_doc経由でアクセス。(主要ブラウザでのベンチマーク比較検証あり)
  • Mutation Event は、薬にも毒にもなるから気をつけて - latest log

    jQuery1.3β みた(jQueryのコードをまじめに見たのは、これが初めてかも) 比較演算子(==)が厳密比較演算子(===)に jQuery の CSSセレクタが、Sizzle 0.9 になった。 以前の Sizzle に存在した“Firefox,Operaでクエリ結果をキャッシュする機能”が、Sizzle 0.9 からはカットされてる。 Sizzle 0.9 から キャッシュ機能 が消えたわけを想像してみる CSSセレクタの結果をキャッシュする方法の一つに、Mutation Event がある。 document.addEventListener("DOMSubtreeModified") ってやると、DOMツリーの全ての改変をフックしてくれる。 ちょっと前の Sizzle は、"DOMNodeInserted", "DOMNodeRemoved", "DOMAttrModifi

    Mutation Event は、薬にも毒にもなるから気をつけて - latest log
    wacky
    wacky 2008/12/29
    DOM Level2 MutationEventsのパフォーマンス上の注意点。CSSセレクタSizzle(jQuery)とPeppyの抱える問題。『ブラウザシェアの70%がIE6+IE7なのに、「(IE以外だと)高速なんですよ…ゴニョゴニョ」って、子供に言ったら笑われちゃうぜ?』
  • 高速化 - latest log

    昨日がベンチマークだったので、今日は速度について。 いつまで教科書を信じてるんだい? プログラミングの教には、「ループ」がこのように書かれています。 これはよく見られる記述ですが、最も遅い書き方です。 var ary = [...]; var i; for (i = 0; i < ary.length; i++) { なにか }ループ毎にlengthを再評価しなければ、ちょっと早くなります。 var ary = [...]; var i; var sz = ary.length; for (i = 0; i < sz; i++) { なにか }i++ を ++i にするとさらに早くなります。 var ary = [...], i = 0, sz = ary.length; for (; i < sz; ++i) { なにか }これらの些細な修正を施すだけで、単純ループなら5〜8%は高速化

    高速化 - latest log
    wacky
    wacky 2008/09/11
    JavaScriptの高速化テクニック。ループの条件として使うプロパティは変数に代入、forループではi++より++i、比較は==より===。
  • excanvas.js のハマリどころ, G_vmlCanvasManager.initElement の使い方 - latest log

    追記: uupaa-excanvas.js をリリースしました。 excanvas.js は IE で canvas 要素のエミュレートを行う Google 謹製の JavaScript ライブラリです。 このライブラリは、最初のとっかかりが結構難しいです。 実体験を元に、ハマリポイントを列挙してみます。 動的に生成したcanvas要素は、すぐにドキュメントツリーに追加し、その場で初期化する必要がある。 以下が、動的にcanvas要素を生成し2Dコンテキストを取得する例です。が… var e = document.createElement("canvas"); document.body.appendChild(e); var ctx = e.getContext("2d"); 上記のコードでは、IEでは動作しません(Firefox,Safari,OperaはOK)。 動的に生成したca

    excanvas.js のハマリどころ, G_vmlCanvasManager.initElement の使い方 - latest log
    wacky
    wacky 2008/08/14
    ExCanvas初心者の注意すべき点。『動的に生成したcanvas要素は、すぐにドキュメントツリーに追加し、その場で初期化する必要がある』
  • 1