【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いですが、何卒、ご了承ください ( _ _ b
updated on 7/13/2006
Spry
http://labs.adobe.com/technologies/spry/
#Spry - Change Log に Spry is now compatible with frameworks based on Prototype 1.5 rc0 or later. と書いてありましたが、どこがコンパチブルなのかは一目ではわかりませんでした(1分半くらい、今日は時間が無くて、本当に一目しか見ていないのでアバウトです^^;)。ドル関数のエントリを書いた時に確認したように、一部同じコードをコピーし、使用しているのかな?少なくともドル関数についてだけですが、SpryData.js内のはPrototype 1.5 rc0 ではなくPrototype 1.4のコピーでした。
アドビのAjaxフレームワーク「Spry」を使ってみよう
http://www.atmarkit.co.jp/fwcr/special/ajax_spray/01.html
//Spry_P1_1_06-08
function $()
{
var elements = new Array();
for (var i = 0; i < arguments.length; i++)
{
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
if (arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
なるほど。prototype.js と同じですね。//1.4.0_rc1 (Rico 1.1.2)
function $() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
if (arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
ただし、Scriptaculous 1.6などで使われているprototype.js v1.5とは違います。
v1.5では、下記のようにElement.extend(element)の戻り値を返すようになっています。
//1.5.0_pre1 (Scriptaculous 1.6)
function $() {
var results = [], element;
for (var i = 0; i < arguments.length; i++) {
element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
results.push(Element.extend(element));
}
return results.length < 2 ? results[0] : results;
}
ちなみに、Element.extend(element)は、Element.Methodsオブジェクトにあらかじめ用意されているメソッド群を該当要素へ強制的に追加します。
<script type="text/javascript"
src="../../lib/prototype.js"></script>
<div id = "test"
style = "width:100;height:100px;background-color:#4c95ff ;"
>Test</div>
<input type="button" value="消す" onclick="$('test').hide()">
<input type="button" value="出す" onclick="$('test').show()">
サンプル /* These sources are parts from prototype.js v1.5.0_pre1. * --------------------------------------------------------------- * Prototype JavaScript framework, version 1.5.0_pre1 * (c) 2005 Sam Stephensonで、ドル関数の機能を追加したければ、 prototype.js v1.5のなかの「Element.Methods = {」で始まるブロックを探し、そこに書いてある下記のようなメソッドを、上記のhideやshowメソッドに続けて「,」で区切りながら追記します。* * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://prototype.conio.net/ * /*--------------------------------------------------------------------------*/ function $() { var results = [], element; for (var i = 0; i < arguments.length; i++) { element = arguments[i]; if (typeof element == 'string') element = document.getElementById(element); results.push(Element.extend(element)); } return results.length < 2 ? results[0] : results; } if (!window.Element) var Element = new Object(); Element.extend = function(element) { if (!element) return; if (!element._extended && element.tagName && element != window) { var methods = Element.Methods; for (property in methods) { var value = methods[property]; if (typeof value == 'function') element[property] = value.bind(null, element); } } element._extended = true; return element; } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, hide: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); element.style.display = 'none'; } }, show: function() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); element.style.display = ''; } } // 上記hide,show以外に、さらに必要なメソッドがあれば、 // prototype.js ソース内の Element.Methods オブジェクトから切り取ったり、 // 自作などして、ここへ追記します。下記を参照。} var $A = Array.from = function(iterable) { if (!iterable) return []; if (iterable.toArray) { return iterable.toArray(); } else { var results = []; for (var i = 0; i < iterable.length; i++) results.push(iterable[i]); return results; } } Function.prototype.bind = function() { var __method = this, args = $A(arguments), object = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } }
メソッド名: function() {
//スクリプト
}
MITスタイルといいつつ、http://www.prototypejs.org/licenseでは著作権表示は求めていないように見えますが……。ちょっと誤解を招きそうな書き方ですね。
t ( 2007年04月12日 15:15 )MITなのに著作権表示義務がないんですか?
MIT License
http://ja.wikipedia.org/wiki/MIT_License
はい。そう見えます。
http://www.prototypejs.org/license (MIT-style license)をクリック
http://www.opensource.org/licenses/mit-license.php
見ました。確かに、比べると著作権表示の行が削除されていますね。意図的としか思えない感じですが、MITライセンスの大事な部分なのに、この件についての言及が見つけられませんでした。
うーん、修正BSDってわけでもないですし、、、。気持ちは理解できますけど、パブリックドメインではなく、あくまでMITで、かつこれ?
どこかに、この件って書かれているでしょうか?
確認::削除されているように見える部分は、↓下記でよいですよね。
http://www.opensource.org/licenses/mit-license.php
>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
和文
http://www.opensource.jp/licenses/mit-license.html
>上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。
ちなみに、仲間であるscript.aculo.usの方は正式なMITになっているようです。http://wiki.script.aculo.us/scriptaculous/show/License
米AdobeのSpry framework for Ajaxが1.1へ - prototype.jsライクな使い方も
http://journal.mycom.co.jp/news/2006/06/12/440.html
Spry framework for Ajax
http://labs.adobe.com/technologies/spry/
#ドル関数$()が、JSライブラリベースのデファクトスタンダード化しつつある、、?
#下記へ続く
【Spry,prototype.js】$()ドル関数を比較する
http://jsgt.org/mt/archives/01/001113.html
WebデザイナーのためのAjaxツール、Adobeの「Spry framework」とは?
http://journal.mycom.co.jp/articles/2006/05/26/spry/
Spry framework for Ajax
http://labs.adobe.com/technologies/spry/
Demo
http://labs.adobe.com/technologies/spry/demos/
Spry Data Set and Dynamic Region Overview
http://labs.adobe.com/technologies/spry/articles/data_set_overview.html
Dynamic Table Tutorial
http://labs.adobe.com/technologies/spry/articles/dynamic_table.html
Building a Photo Album with the Spry framework
http://labs.adobe.com/technologies/spry/articles/photo_album.html
#マクロメディア系な仕上がりのかっこよさげな感じです。もう、どれを使えばよいか悩みますね〜。
Safari 2だとエフェクトの処理が結構もたつきますね〜
高橋 ( 2006年05月12日 15:42 )今こちらでも試してみましたが、Mac mini Safari2ですが、問題ないぽいです。何が違うのでしょう?
古籏一浩 ( 2006年05月12日 21:46 )うちはバックグランドでエンコード処理してました(汗)
負荷200%じゃもたつきますね(笑)
それにしても、見た目は大事ですよね〜。
使ってみたくなります。
Flash使わなくても、これだけできるんですね〜
うちもメインはMacmini+Safari2なのですが、あまりストレスは感じませんでした。
Now loading...が結構うっとうしいので、こういうUIはいいです。
でも逆に、Now loadingをAjaxで表示させることは出来るのでしょうか?
でも、それじゃあAjaxの意味がなくなってしまいますかね。
>Now loadingをAjax
FlashやAjaxのように画面遷移がないものは、nowloadingなどのユーザーへの状態情報が表示されないと、不安になって無駄なクリックを発生させるなどの問題が起こりやすくなります。ということで、着信イエローフェイドなどのテクニックが使われているわけですね。
ということで、こんなのもあります。
Indicatorオブジェクトv0.03
http://jsgt.org/mt/archives/01/000906.html
Indicatorオブジェクトv0.01
http://jsgt.org/mt/archives/01/000747.html
http://jsgt.org/lib/indicator/jsgt_indicator001/jsgt_indicator001.htm
Allabout::Ajaxで受信中のインジケータを表示する
http://allabout.co.jp/internet/javascript/closeup/CU20060315A/index.htm
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 |