kumuでのevent処理
http://d.hatena.ne.jp/yuki_neko_nyan/20060425/1145975300
で書かれてますが綺麗に書けることは重要かなと。
で実際kumuでは?って話。
他のライブラリと同じくリスナーで拾い上げるのがベストかなと。
(他に思いつかん)
使い方としてはイベント処理をする要素のid、event名、コールバック関数を指定します。
sample.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript"> function attach(id, name, observer){ var element = document.getElementById(id); if (element.addEventListener) { element.addEventListener(name, observer, true); } else if (element.attachEvent) { element.attachEvent('on' + name, observer); } } function call(){ alert('test'); } </script> </head> <body> <form name="myForm"> <select id="test1"><option>1</option><option>2</option></select> <select id="test2"><option>10</option><option>11</option></select> </form> <script> attach('test1','change',call); </script> </body> </html>
combobox連携する時に実際に使うコードですが。
test1の値が変わるとalertが出るはずです。
これがEvenObserverっていってる奴ッス。
こいつを使うといろんなeventと関数(Ajaxとかも)を組み合わせる事が可能です。
まあ実際ライブラリ化する時にはもうちょっと綺麗に書くのと+αなにかかますと思います。
delayはいらないと思うので呼び出しカウンタか、一回だけ呼べるようにするだとか。
あるいはdojoのようにeventとeventを連携させれるようにするかとかね。
(eventとeventの連携は需要ありそうだなあ。)
あと綺麗に書くという意味では
<input type="text" id="auto" kumutype="auto_complete" component="sampleBean.autocomplete" />
でAutoComplete実現みたいな。
HTML拡張系も考えていきたいと思ってます。
(scriptの量を減らす。kumutype属性を勝手に拾ってそいつにscriptを当てるみたいな)
うくく。