`
jetway
  • 浏览: 480230 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Prototype.js

    博客分类:
  • ajax
阅读更多

1.Prototype.js

 Prototype.js 是Javascript编写者的一把小军刀,提供了Ruby风格的简写语法和实效的函数,更难得的是完全跨浏览器,让大家舒舒服服写出又精简又不用愁心兼容的的JS代码,springside 已经离不开它了。

 Prototype.js最重要的文档是

1.1 最爱$系列 

我最喜欢是可以用${"bookDiv"} 等价于通用的document.getElementByID("bookDiv")

值得留意的还有和CSS一样的批量选择语法$$(),如

$$('div#left_books).each(....)

Element系列有很多实用的函数:

$('bookdiv').update('<p>...</p>'); //更新innerHtml
$('bookdiv').show(); 
$('bookdiv').hide(); $('bookdiv').toggle(); //切换visiable $('bookdiv').visiable(); //返回是否visiable $('bookdiv').scrollTo();
.....还有很多

1.2 传统的Ajax

传统的基于URL的ajax函数简单实用。

  new Ajax.Updater('bookdiv',"foo.jsp");

此函数的还有很多可选的参数,参数列表见此

new Ajax.Updater('bookdiv',"foo.jsp", {onComplete: initObserve});

比如需要异步执行ajax, 更新bookdiv后需要重新执行initObserve, onComplete的设置就刚好满足你的要求。

另有可定时执行Ajax的PeriodicalUpdater

1.3 Form系列函数也不错

Form.serialize   将Form中所有Input对象的值转化为一个URL String,方便把Form转为用 URL Get方式的Ajax提交,最经典的用Ajax提交Form的例子:

  <form action="/action/here" method="post" 
onsubmit="new Ajax.Updater('div_to_be_updated', '/action/here', {parameters:Form.serialize(this)});
return false;">

 另外,Form.focusFirstElement , Form.getInputs等函数也很实用 

1.4 Event系列

除了后述的Observe模式外,还有下列保证兼容IE和FF的事件函数:

1.Event.element(event),找出触发事件的element.

2.Event.findElement(event,tagName),搜索DOM tree里事件的响应链里的第一个符合tagName的element.

3.pointerX(event),pointerY(event)等

还定义了一些标准KeyCode,见:http://www.sergiopereira.com/articles/prototype.js.html#Reference.Extensions.Event

1.5 Ruby风格

1.循环函数

elements.each( function(element){
alert(element);
});

2.不定参数

new Ajax.Updater('mydiv', '/foo/bar', {asynchronous:true});

2. Observe模式达到搜索引擎Friendly

Observe模式,就是连接仍然以<a href="foo.jsp">形式编写,用Observe为其加入onClick事件的侦听。 这样,当搜索引擎访问时,就会访问传统的URL;而用户使用IE访问时,就会被Observe转为使用onClick事件的Ajax效果。

见SpringSide中的/home/index.jsp 图书详情察看--通过selector查找需要处理的链接,循环为每个链接添加观察者,为click事件,添加handle函数。  

   
   
$$('div#left_books * a[href]').each(function(element){
Event.observe(element,'click',handlerCilckEvent,false);
});
function handlerCilckEvent(event){
    var element = Event.element(event);
   new Ajax.Updater('bookdiv',element.href);
    Event.stop(event);
    $('bookdiv').show(); }

3.script.aculo.us 的Dom Builder

script.aculo.us 在Prototype的基础上进行了二次开发。

它的语法超简洁的Builder, 相比之下W3c的Dom Builder语法简直是噩梦。html片断不复杂时如果用JSTemplate有点大炮打蚊子,用script.aculo.us的Builder就够了。

Builder很有Ruby的风格,请看下面一句

   
foo= Builder.node('a', {href:"foo.jsp"},categorys[i].name)

第1个参数是element类型,第2个是可选的attribbute,第3个是节点内的子节点。

如果要换成W3c的Dom函数写法,善哉善哉。

下面这段更明显直接照元素的页面顺序来生成对象,而不是像W3C Dom Builder很逻辑抽象的,先生成对象,然后append到父元素。

   
div = Builder.node('div',{className:linkDiv},[
Builder.node('a', {href:"foo.jsp"}, categorys[i].name)
]);

当然了,还是没有JS Template清晰,所以Builder只作为html片断非常短时使用。

4.script.aculo.us 的Autocompleting  text fileds

script.aculo.us 提供了非常方便的使用ajax 调用服务器端自动填充文本框功能。

仅需一句话,使用非常简单

new Ajax.Autocompleter(id_of_text_field, id_of_div_to_populate, url, options);

如SpringSide书店首页的查询为例子

HTML

< PRE><input id= "search_value"name="query"  autocomplete="off" />
 

Javascript

    newAjax.Autocompleter('search_value','contact_name_auto_complete','<c:urlvalue="/bookstore.do?method=autoComplete"/>', {})

CSS

div.auto_complete {
 float: left:
 border: #888 1px solid;
 padding:  0px;
 margin: 0px;
 width: 250px;
 position: absolute;
 background-color: white;
 text-align: left;
 color: #454545;
}
div.auto_complete ul {
 border: #888 1px solid;
 padding: 0px;
 margin: 0px;
 WIDTH: 100%;
 list-style-type: none;
}
div.auto_complete ul li {
 padding: 3px;
 margin: 0px;
}
div.auto_complete ul li.selected {
 background-color: #ffb;
 border-top: 1px solid #CADAE8;
 border-bottom: 1px solid #CADAE8;
}
div.auto_complete ul STRONG.highlight {
 padding: 0px;
 margin: 0px;
 color: #800;
}

Server 端需要返回的是一个下列形式的字符串

<ul>
    <li>book1</li>
    <li>book2</li>
</ul>
分享到:
评论

相关推荐

    prototype.js中文手册

    Prototype.js 是一个开源JavaScript库,由Sam Stephenson于2005年创建,主要用于简化DOM(文档对象模型)操作,增强JavaScript的面向对象编程能力,以及提供实用的函数扩展。它在Web开发中扮演着重要的角色,尤其在...

    prototype.js

    《prototype.js:JavaScript框架的核心与应用》 在Web开发领域,JavaScript库和框架极大地提高了开发效率,其中Prototype.js就是一款非常流行的开源JavaScript框架。本文将深入探讨Prototype.js的核心概念、功能...

    prototype.js文件使用和讲解

    `prototype.js`是一个开源库,旨在扩展JavaScript的基础功能,尤其是面向对象编程的支持。这个库由Sam Stephenson创建,是Prototype Library的一部分,广泛应用于Web应用开发中,尤其在Rails框架下的Ajax开发。 ###...

    prototype.js 1.4-1.6[全]

    《Prototype.js 1.4-1.6:JavaScript 动态原型框架的探索与实践》 Prototype.js 是一个广泛使用的JavaScript库,它扩展了JavaScript语言的功能,为开发人员提供了更强大的面向对象编程支持。该库的核心特性是其对...

    prototype.js简介

    **描述:** prototype.js 是一个JavaScript库,主要目的是为了简化JavaScript的开发,提升开发效率。它通过扩展JavaScript的基本对象和类型,提供了丰富的功能,包括类式继承、面向对象编程的支持以及一些实用的DOM...

    prototype.js 1.6

    《Prototype.js 1.6:JavaScript 动态对象增强库的深度解析》 Prototype.js 是一个广泛使用的 JavaScript 库,它为浏览器环境提供了许多实用的功能,尤其是在对象操作和事件处理方面。1.6 版本是该库的一个重要里程...

    prototype.js 1.4版开发者手册(强烈推荐)

    《prototype.js 1.4版开发者手册》是JavaScript开发领域中的一个重要参考资料,尤其对于那些希望深入理解并利用Prototype库的开发者来说,它是一份不可多得的资源。Prototype.js是一个强大的JavaScript库,由Sam ...

    prototype.js 1.6中文手册、prototype.js 1.6英文手册、

    Prototype.js 是一个开源的JavaScript库,它扩展了JavaScript语言,为开发者提供了许多便利的功能,特别是在对象操作、DOM操作和事件处理方面。1.6版本是该库的一个重要里程碑,引入了诸多改进和新特性。 ### 1. ...

    prototype.js javaScript插件

    "Prototype.js"是一个针对JavaScript的开源库,旨在增强和扩展JavaScript的基本功能,尤其在处理DOM(文档对象模型)操作、事件处理以及Ajax交互时提供了极大的便利。 ### 1. Prototype.js核心概念 - **原型链**:...

    prototype.js 实例

    在JavaScript的世界里,Prototype.js是一个著名的库,它扩展了JavaScript的内置对象,为开发者提供了更加便利的编程体验。本实例将深入探讨如何利用Prototype.js来实现弹出窗口和移动窗口的功能,这对于创建交互性强...

    prototype.js_v1.6_含中英文手册

     prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。  prototype.js不仅是一个有很大实用价值的js库,而且有很...

    prototype_1.7.3.js 最新版本

    《prototype_1.7.3.js:JavaScript框架的里程碑》 在JavaScript的世界里,Prototype库是一个不可或缺的重要组成部分,尤其在Web开发领域,它为开发者提供了强大的功能和便利性。Prototype_1.7.3.js是这个库的一个...

    在vs2005基于prototype.js的模态弹出窗口

    **Prototype.js** 是一个轻量级的JavaScript库,旨在简化DOM操作,提供面向对象的JavaScript编程,并且包含一些实用的辅助函数。在2005年,Prototype.js因其强大的功能和易用性而受到开发者的欢迎,尤其在创建动态...

    prototype 开发应用手册,笔记,prototype.js文件下载

    总结,Prototype.js是JavaScript开发中的一个重要工具,它通过一系列强大的API和设计模式,使得JavaScript的开发更加高效、优雅。通过学习和掌握Prototype,开发者可以更好地驾驭JavaScript,创造出更具交互性的Web...

    prototype.js.cn.doc.rar

    Prototype.js是一款强大的JavaScript库,由Sam Stephenson开发,旨在简化JavaScript的编程,提供了一系列实用的函数和类扩展,增强了JavaScript的基本功能。这款库的核心理念是通过类原型(Class Prototyping)实现...

    Prototype.js 1.6.0.3 及中文CHM帮助文档

    Prototype.js 是一个广泛使用的JavaScript库,它为JavaScript编程提供了丰富的功能和便利,旨在简化和优化在浏览器环境中进行的脚本编写。1.6.0.3 版本是该库的一个稳定版本,它包含了对先前版本的改进和修复,以...

    javascript类库prototype.js

    Prototype.js 是一个强大的JavaScript类库,它为开发者提供了丰富的功能,使得创建具有高度互动性和Web2.0特性的富客户端页面变得更为简单。这个库的设计理念是扩展JavaScript的基础对象,提供一套统一且易于使用的...

    prototype开发者手册(中文版)+prototype.js

    总的来说,《Prototype开发者手册(中文版)》结合Prototype.js库,为JavaScript开发者提供了丰富的资源和工具,帮助他们更高效地进行前端开发。无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的...

Global site tag (gtag.js) - Google Analytics