prototype.jsで関数のスコープを任意のオブジェクトに委譲する
Function.bindメソッドはイベントのコールバック関数なんかで使うのにすこぶる便利なんだけど
jQueryには意外とそれっぽい機能がないように思う。
ので応急処置として以下のコードを書いておく。
jQuery.scope = function(target,func){ return function() { func.apply(target,arguments);}};
こう使います。
$.ajax({
url:'hoge.xml',
complete: $.scope(this,handleComplete)
});
function handleComplete(data,status){ ... }
スコープを渡さないで実行すると、コールバックのスコープはイベント自身なんだけど
クラス内で$.ajaxを使いたい場合なんかは不都合ですんで。
時間があれば、さくっとプラグインにしておきたいけど
プラグインにするほどのコード量じゃないし、
プラグインは別ファイル化するのが一般的だから、いちいち面倒くさいし。
ちなみに、これはActionScriptでいうところの
mx.utils.Delegate.createと全く同じ機能ですね。
Posted in
ajax,
javascript,
jquery at 2月 21st, 2008.
3 Comments.
また新しいJavaScriptフレームワークの登場らしい。
結構いいなぁと思うんだが、すでに選択が難しいよね。
http://docs.mootools.net/files/Core/Moo-js.html
AjaxでちょっとしたRSSリーダーでも作ろうと思って
手を動かしはじめたんだけど
あんまり多くのライブラリは使いたくないという理由でPrototype.jsにした。
で一番しょっぱなからつまづく
<br />new Ajax.Request('http://b.hatena.ne.jp/zackle/rss',options);<br />
で、ローカル上(←ここが重要だったらしい)のHTMLから動かしても
FireFoxでうんともすんともいわねぇ。
IEでは通る。
どうやらFireFoxはローカル以外のファイルにアクセスできないようになっているらしい。
それならばと、XMLをローカルに配置していざ!
<br /> new Ajax.Request('rss.xml',options);<br />
これだと、FireFoxでは動くものの
IEではNullっぽいものが返ってくる。
で、さんざん悩んだ結果、IEはローカルファイルにアクセスできないんだと。
え?Mozzilaはローカルファイルじゃないとアクセスできなくて
IEはローカルファイルにアクセスできない??
なにその相反した関係は・・・。
よくよく考えたら、サーバにあげればいいんじゃんという
ごく普通の事に気がついた。
当然動いた。
つまり別サーバにあるXMLを取得するには、サーバプログラムをかます必要があるってことだな。
それと開発にはサーバが必要だってことじゃんね。
僕のようなJavaScriptをよく知らない人間は、結構落ちる罠かなと。
Posted in
ajax,
javascript at 10月 26th, 2006.
No Comments.
prototype.jsを読み始めた。
クロージャが沢山でてくる。
var Class = {
create:function(){
return function(){
return this.initialize.apply(this,arguments)
}
}
}
JavaScriptはクロージャを使うことが多いらしいので
きちんと把握せねばなぁ。
あとで読む
http://ishikawa.arielworks.com/memo/2005/07/24/031449
つい最近匿名関数が
すぐ使えることを知った身としては、まだまだというか
JavaScriptおもしろ。というか。
Flashだとあまりコアな部分は気にしてなかったからなぁ。
–
もうずっとだけど、ロリポップのサーバが頻繁に落ちる。
全然使えねえな。
レンサバ変えるか、家に鯖立てるか。
自宅鯖は却下だな。だってうちすぐ電気もネットも止まるもん。Mac miniとかで立てたいけども。
ヘテムルとかしか、あとしらね。FMSとか普通に考えていらねーよなぁ。RubyとPythonはあるにこしたことなさそう。
Posted in
ajax,
javascript at 10月 24th, 2006.
No Comments.
http://www.hawk.34sp.com/stdpls/xml/xmlhttprequest.html
ここを見て、Ajaxの基本を学んだ。
実際書いて動かしてみたけど、全然難しいことはないね。ブラウザごとの挙動が気になるけれど…。最近のクラスブラウザ事情ってどうなってるんだろう?今だったらエージェントしらべて、State使って…みたいな感じかな?
var request = new XMLHttpRequest()
request.onreadystatechange = function(){}
request.open('GET',url,true)
いままでさんざんFlashでやってきたのと手法は一緒だから、問題はJavaScript+DOMの部分だよな。
Ajaxの仕事でも入ればなぁ…。
Posted in
ajax,
javascript,
日記 at 4月 6th, 2005.
No Comments.