JavaScript

IE使いの為のJavaScriptリファレンスchm

ネタにするのを忘れないうちに書いとこう…。 ちょっと前に、 HTMLヘルプ形式のJavaScriptリファレンス「jsref.chm」を公開した。 - こせきの技術日記 ってエントリーがすごくブクマ集めてたけど、IE使う人間だったら、WSH 5.6のchmを持っておくのも損は無い…

IEの getBoundingClientRect() が2pxずれる現象への対策

けっこう前に2pxずれる現象への対策を書くって言ったまま放置してた件の回答。ちなみに以前書いたエントリーはこれ。getClientRects()とgetBoundingClientRect()の違いとその動作のまとめ - DenkiYagi 結論/対策 getBoundingClientRect() で取得できる値の座…

今、nanashi.js てライブラリ(フレームワーク?)を作ってます。

FLOSS桜山の第八回勉強会(去年の年末開催)のライトニングトークでも多少話してきたんですが、現在、nanashi.js って名前のライブラリを作ってます。作ってます、とはいってもまだAPIを「あぁでもない、こうでもない」と考えてる段階なので公開するモノがな…

JavaScriptを1年ぐらいマトモにやってたら、PHPが不便に感じる。

Closureがない。 無名関数作る時、create_function()に文字列を渡さないといけない。 オブジェクトに対して動的にメソッドを定義できない。 mix-in的なことが出来ない。 いや、なくても大丈夫なんだけどさ。DI Container的なものがあれば補えるから。あとrun…

MochiKit.Signal、なんだかすごい

MochiKit.Signal - Simple universal event handling 同じインタフェースでDOM Eventの登録もAOPぽい事もできるんだ…。これはすごいなぁ。 今作ってるjQueryもどきにも採用できないかな。

Visual Web Developer 2008 Express Editionになって、JavaScriptデバッガがまともに使えるようになった気がする。

今日からVisual Studio 2008 Express Editionのダウンロードが開始されたので、早速Visual Web Developerをインストール→JavaScriptデバッガの動きを確認してみた。 ひとまずインストール 2005はisoイメージしかなかったけど、オンラインインストールが基本…

三項演算子とかswitch文とかの代替になるコードの書き方

jQueryのソース読んでて、三項演算子とかswitch文とかの代替になるキモいコードの書き方をしてるところをみつけた。世間じゃ有名なのかもしれないけど、自分は知らなかったんでメモしとく。こういうのとか var hoge = "適当な値"; var result = (hoge == "適…

getClientRects()とgetBoundingClientRect()の違いとその動作のまとめ

ワタシ、ニホンゴ ニガテ。ダカラ コレ ヨク イミ ワカラナイ。 Element.getClientRects() * 一行一行のボックス情報を取得する Element.getBoundingClientRect * ボーダー辺で囲まれた領域のボックス情報を取得できる getBoundingClientRect()はDrag&Dropを…

クロスブラウザでElement / Nodeを判定

IEでは以下のコードが動作しない。 hoge instanceof Node; hoge instanceof Element; 仕方ないのでJavascript:DOMオブジェクトかECMAオブジェクトかを判定する。: Script雑感を参考にして以下のような判定関数を作った。 if(typeof(Util) == "undefined") w…

JsonML.buildHtmlを作った。ちゃんとテストしてないけど。

今、オープンソースなものを使わないでAjaxアプリを作る仕事をしてるんですが、JsonML.buildHtml的なものが欲しいような気がしたので適当に実装しました。でも、ある程度実装してから、やっぱ使わない方が良い気がしてきました。 まぁ廃棄しよう…と思ったも…

JavaScript継承パターンの間違った使い方

今日は意識せずに以下のようなコードを書いてしまって、30分ぐらいハマってしまった…。 function extend(s, c) { function f(){}; f.prototype = s.prototype; c.prototype = new f(); c.prototype.__super__ = s.prototype; c.prototype.__super__.construc…