2006-01-01から1年間の記事一覧

Fieldオブジェクト

【抜粋】 var Field = { clear: function() { for (var i = 0; i < arguments.length; i++) $(arguments[i]).value = ''; }, focus: function(element) { $(element).focus(); }, present: function() { for (var i = 0; i < arguments.length; i++) if ($(a…

Element.ClassNamesクラス

【抜粋】一部省略 Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, (省略) } Object.extend(Element.ClassNames.prototype, Enumerable);Elementオブジェクトを名前…

Insertion.Topクラス

【抜粋】 Insertion.Top = Class.create(); Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(true); }, insertContent…

Insertion.Afterクラス

【抜粋】 Insertion.After = Class.create(); Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { initializeRange: function() { this.range.setStartAfter(this.element); }, insertContent: function(fragments) { fragme…

Insertion.Bottomクラス

【抜粋】 Insertion.Bottom = Class.create(); Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { initializeRange: function() { this.range.selectNodeContents(this.element); this.range.collapse(this.element); }, …

Insertion.Beforeクラス

【抜粋】 Insertion.Before = Class.create(); Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { initializeRange: function() { this.range.setStartBefore(this.element); }, insertContent: function(fragments) { …

Insertionオブジェクト(名前空間)

【抜粋】 var Insertion = new Object();後述のInsertion.Before、Insertion.Top、Insertion.Bottom、Insertion.Afterクラスの名前空間用オブジェクトです。

Abstract.Insertionクラス

前提条件:DOMについての理解 Insertion関連のクラスを理解するためには、DOMについての理解が不可欠になります。実は筆者もあまり詳しいとは言えません^^; このため、不適切な記述があるかもしれませんが、ご容赦ください。気がついたらその都度修正しま…

Toggleオブジェクト

【抜粋】 var Toggle = new Object(); Toggle.display = Element.toggle;メンバはdisplayメソッドのみです。前述Element.toggleメソッドの別名となっています。例は省略します。

Elementオブジェクト(に対する拡張)(3)

makePositionedメソッド 【抜粋】 makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; …

Elementオブジェクト(に対する拡張)(2)

getStyleメソッド 【抜粋】 getStyle: function(element, style) { element = $(element); var value = element.style[style.camelize()]; if (!value) { if (document.defaultView && document.defaultView.getComputedStyle) { var css = document.default…

Elementオブジェクト(に対する拡張)(1)

【抜粋】一部省略 if (!window.Element) { var Element = new Object(); } Object.extend(Element, { visible: function(element) { return $(element).style.display != 'none'; }, (省略) undoClipping: function(element) { element = $(element); if (el…

document.getElementsByClassNameメソッド

やっと半分まできました^^;申し訳ありませんが、以降は逐行の解読ではなく、ポイントのみの記述とさせてください。ここまでのすべてを理解された方なら、問題ないと思います。 【抜粋】 document.getElementsByClassName = function(className, parentEle…

Ajax.Requestでのフォームデータ送信サンプル(postbodyへの設定)

※http://d.hatena.ne.jp/susie-t/20070531/1180585173 へ移しました。

Ajax.PeriodicalUpdaterクラス

【抜粋】一部省略 Ajax.PeriodicalUpdater = Class.create(); Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { initialize: function(container, url, options) { (省略) }, (省略) onTimerEvent: function() { this.updater = new Aj…

さっき気がついたこと・・・。

今までのJSPの例で、キャッシュ無効化の部分で間違いがありました。 【誤】 response.setHeader("progma","no-cache");【正】 response.setHeader("Pragma","no-cache");「o」になってましたorz すでに修正しましたが、流用している場合にはお気をつけくださ…

Ajax.Updaterクラス

【抜粋】一部省略 Ajax.Updater = Class.create(); Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { initialize: function(container, url, options) { (省略) }, (省略) if (this.responseIsSuccess()) { if (this.onComp…

Ajax.Requestクラス(2)

respondToReadyStateメソッド 【抜粋】 respondToReadyState: function(readyState) { var event = Ajax.Request.Events[readyState]; var transport = this.transport, json = this.evalJSON(); if (event == 'Complete') { try { (this.options['on' + thi…

Ajax.Requestクラス(1)

【抜粋】一部省略 Ajax.Request = Class.create(); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Request.prototype = Object.extend(new Ajax.Base(), { initialize: function(url, options) { this.tr…

連想配列ソート関数

はてなの人力検索で回答した際に、連想配列ソート関数を作成したので載せておきます。※Operaで想定外の動作をする場合があります。追記を参照してください。 <html> <head> <title></title> <script> /** * sortObj 連想配列ソート関数 * @obj 対象オブジェクト * @isKey true : キーでソート * </head></html>…

Ajax.Baseクラス

【抜粋】一部省略 Ajax.Base = function() {}; Ajax.Base.prototype = { setOptions: function(options) { this.options = { method: 'post', asynchronous: true, parameters: '' } Object.extend(this.options, options || {}); }, (省略) responseIsFailu…

XMLHttpRequestのresponseTextで扱える文字コードについて

よく分かっていない部分もありますが、備忘録としてメモします。XMLHttpRequestオブジェクトのresponseTextプロパティは、(ほとんどのブラウザで)デフォルトでは文字コードUTF-8とみなされます。が、ブラウザよって違いはありますが、他の文字コード(shift_j…

Ajax.Respondersオブジェクト

【抜粋】一部省略 Ajax.Responders = { responders: [], (省略) dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (responder[callback] && typeof responder[callback] == 'function') { try { responder[cal…

Ajaxオブジェクト

prototype.js解読のもう一つの山場。というか、ここが肝でしょうか。Ajax.Responders, Ajax.Base, Ajax.Request, Ajax.Updater, Ajax.PeriodicalUpdaterはそれぞれ別に解読します。Ajaxオブジェクトは上記のAjax関連のクラス・オブジェクトの名前空間(他と名…

いつかはもっときれいにしたい。

prototype.jsの解読なんぞをやっていますが、拙作theater.jsではprototype.jsを使っていません。それでもクラス作成・継承をやっています。・・・が、かなりごちゃごちゃしてます。prototype.js等を知らずに我流でやってしまった結果です。なので、お手本に…

$R関数

【抜粋】 var $R = function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); }前述ObjectRangeクラスのオブジェクトを作成、返却します。 【例】前述のObjectRangeクラスの例を$R関数に変えただけ。 var objR1 = $R(-2, 3, true)…

ObjectRangeクラス

【抜粋】 ObjectRange = Class.create(); Object.extend(ObjectRange.prototype, Enumerable); Object.extend(ObjectRange.prototype, { initialize: function(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; }…

$H関数

【抜粋】 function $H(object) { var hash = Object.extend({}, object || {}); Object.extend(hash, Enumerable); Object.extend(hash, Hash); return hash; }空のオブジェクトに、引数object(nullの場合は空オブジェクト)を継承させています。これにより引…

配列とカスタムオブジェクト(連想配列)

配列はArrayクラスのインスタンスです。ただし、以下の前提があります。配列のインデックスは0から連続した自然数である勘違いしがちなのは、lengthプロパティがオブジェクトのメンバ数を表す、と思ってしまうことです。実際には最大の自然数のインデックス+…

HashクラスのEnumerableクラスから継承したメソッド使用サンプル(2006/09/04追記)

HashクラスのEnumerableクラスから継承したメソッドについて、使用サンプルを羅列します。いっぺんには書けないので少しずつ追加していきます。・・・そのうち字数制限に引っかかるかも^^; そのときは別の日に移します。。。基本的に「Enumerableクラス(2…