JAVASCRIPT

Ajax.Updater

はじめの一歩ってことで。 doSimpleXMLHttpRequest(url).addCallback(function (xhr) { getElement(id).innerHTML = xhr.responseText; });

link:IBM JavaScript での有限状態マシン

あーとーでー。

MochiKit をさわってみた

http://labs.unoh.net/html/mochikit/ 勉強の足がかりとして。 とりあえず、sticky.jsをmochikitで作ってみるかな…

loadJSONDoc()

function demo_async() { var url = 'META.json'; var d = loadJSONDoc(url); var gotData = function (data) { alert('MochiKit.Async version is ' + MochiKit.Async.VERSION); }; var dataFetchFailed = function (err) { alert("The data could not be f…

Deferred、遅延リソースのインターフェース、パターン

http://d.hatena.ne.jp/brazil/20061230/1167471953 loadJSONDoc()の動作を理解するために。

あとでいろいろ読む

http://www.mochikit.com/doc/html/MochiKit/Async.html http://www-06.ibm.com/jp/developerworks/xml/library/x-matters47/index.shtml http://tech.feedforce.jp/mochikit.html

sticky.js(作りかけ)

JavaScript var Sticky = Class.create(); Sticky.prototype = { initialize: function(id, contents, top, left) { this.id = id; this.table = Builder.node('table', {id:id, className:'sticky'}, [ Builder.node('tbody', {}, [ Builder.node('tr', {},…

sticky.js(作りかけ) その2

デモ http://storehouse.sakura.ne.jp/sticky/example.html 実装すること テキストエリア編集時、自動的にテキストのサイズに合わせる テキストエリア編集中にリサイズできるようにする(または、十分な大きさのテキストエリア) viewモードでのHTML・空白・改…

sticky.js(概ね完成)

バグがなければとりあえず完成です。 ヒマな方は使ってみてください。 http://storehouse.sakura.ne.jp/sticky/example.htmlCSS周りはwemaを参考にしました。

local_javascript_tag

def local_javascript_tag(contents) javascript_tag <<-EOS (function() { #{contents} })(); EOS end 本体にほしいなぁ。

measure_text_width, measure_text_height

function measure_text_width(text) { var width = 0; var lines = text.split(/\x0d\x0a|\x0d|\x0a/); for(var i=0; i

Array.uniq

「Arrayにuniqってあったけ?」という話をなんとなく聞いていて、実装を考える。 with (Array) { prototype.uniq1 = function() { var src = this; var dest = new Array; var buf = src[0]; for(var i=1; i<=src.length; buf=src[i++]) { if(!src[i] || buf…

ジェネレータって…

こんな感じかな? function make_fib() { var a = 1; var b = 1; return function() { var buf = a; a = b; b = buf + b; return buf; } } var fib = make_fib(); for(var i=0; i<10; i++) print(fib()); 状態を持つ関数はジェネレータなのかな… make_fib()…

ジェネレータ その2

make_fib()をなくそうとしてみる。 function fib(func) { var a = 1; var b = 1; func.next = function() { func(a); var t = a; a = b; b = t + a; } } fib(print); print.next(); print.next(); print.next(); print.next(); print.next(); うーん、yield…

JavaScript 1.7風

もう寝ます… function yield(nextval) { var generator = {}; generator.next = function() { return (typeof(nextval) == "function") ? nextval() : nextval; } return generator; } function make_fib() { var a = 1; var b = 1; return yield(function()…

テンプレート

http://phpspot.org/blog/archives/2006/08/javascriptrnd.html http://la.ma.la/blog/diary_200512291411.htm function Template(src) { var tmpl = new String(src); tmpl.merge = function(ns) { var fn = function(w, g) { g = g.split("|"); var cnt = …

オブジェクトを拡張するクラス その2

まともに動きそうにないので、プロパティをコピーするんじゃなくて、元オブジェクトを拡張するように修正。newしてるんだし、まあクラスかな、と。なんか、コンストラクタとグローバル関数の境があいまいだなー。 <html> <head> <script> function Bar(obj) { obj.hello = functi</script></head></html>…

private 〜 或いはしかしprototypeを使わない

function Point() { var x = 0; var y = 0; this.getX = function() { return x; } this.getY = function() { return y; } this.set = function(i_x, i_y) { x=i_x; y=i_y; } } var pt = new Point(); pt.set(100, 200); print( pt.getX() + ' ' + pt.getY()…

いくつかメモ

JavaScript関係の媒体型 Under Translation of ECMA-262 3rd Edition

インスタンスを拡張するクラス

function Foo(obj) { for(i in obj) this[i] = obj[i]; } a = { a:"A", b:"B", c:"C", d: function() { print(this.a); } }; foo = new Foo(a); a.d(); foo.d(); ほんとはブラウザ上で var tag = document.getElementById('foo'); var extag = new Foo(tag);…

コンストラクタで処理開始?

prototype.jsを使っていて、ふと「なんでインスタンスを生成したタイミングで、処理が開始されるんだろう?」とか思った。Ajax.Requestでnewした瞬間にリクエストをなげるとか。start()とかbuild()みたいなメソッドは作らないみたい。でまあ、理由を考えてみ…

いろいろリファレンス

http://www.openspc2.org/JavaScript/Ajax/ref/ メモメモ。

Script.aculo.us Select Box

http://phpspot.org/blog/archives/2006/10/javascriptcssse.html けっこー便利。

究極の JavaScript クライアント判別, Version 3.03

http://www.mozilla-japan.org/docs/web-developer/sniffer/browser_type.html 今後、お世話になりそうなので、メモ。

Classic Event Handlers

http://webfx.eae.net/dhtml/ieemu/classicevents.html これもメモ。

Firefoxでの擬似window.event

http://p2b.jp/index.php?UID=1149066600 メモメモ。 この辺の差異はなるべくきれいに吸収したいなー。

JavaScriptにおけるURLエンコードの処理

http://www.cresc.co.jp/tech/java/URLencoding/JavaScript_URLEncoding.htm メモ。

Main Page > Core JavaScript 1.5 Guide > The Employee Example

http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:The_Employee_Example 実に分かりやすいと思う。 コンストラクタの括弧って省略できたのか…知らんかった。

エレガントな JavaScript を作成するための関数型プログラミングの使用

http://www-06.ibm.com/jp/developerworks/java/060728/j_wa-javascript.shtml メモメモ。

プロパティ

Firefoxの拡張のソースを眺めてて、なんとなく気になった。 Firefox独自かなぁ…Rhinoでは使えなかったけど。 <html> <head> <script> var o = { _foo: 10, get foo() { return this._foo; }, set foo(x) { this._foo = x; } }; </script> </head> <body> <input type="button" onClick="alert(o.foo)"> </body> </html>