`
江南白衣
  • 浏览: 548561 次
  • 来自: 广州
社区版块
存档分类
最新评论

Prototype.js--Javascript编写者的小军刀

阅读更多

Overview

笔记

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

   个人最常用Ruby风格OO语法与$选择符,Element与Form Element系列函数以及传统Ajax三项。

1.1 Ruby风格的OO语言

1.Class

Javascript本身的OO语法很难懂,prototype封装了Class类 。

var Person = Class.create({
 initialize: function(first,last, city) {
 this.first= first;
 this.last= last;
 this.city = city;
 },
 getFullName: function() {
     return (this.first + ' ' + this.last).strip();
 }
});

2.Ruby风格的不定参数,非常实用的语法

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

3.循环闭包

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

1.2 最爱$/Element 系列

我最喜欢是可以用$  等价于平台无关的document.getElementByID("bookDiv"):

$ {"bookDiv"}

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

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

Element系列 有很多实用的函数,可以进行任意的DOM操作与DOM导航,值得细细阅读:  

$('bookdiv').update(' < p > </ p > ');  // 更新innerHtml 
$('bookdiv').show(); 
$('bookdiv').scrollTo();$('bookdiv').nextSiblings();//导航

而且方法可以连续调用:

$('messageDiv').addClassName('operationOK').show();

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 等函数也实用。 还有Form.Element 的函数也可以使用。

1.4 传统的Ajax

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

Ajax.Request

new Ajax.Request(url, {
    onSuccess: function(transport) {
       (transport.responseText);
    }
});

Ajax.Updater

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

此函数的有很多可选的参数 ,返回的Ajax.Response 有status,responseText,responseJSON,responseXML 等属性。

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

定期执行的Ajax,4秒执行一次(默认为3秒)。他还有个兄弟PeriodicalExecuter

new Ajax.PeriodicalUpdater('items', '/items', {
   frequency:4
});

Ajax.Responders 注册handler,对所有的Ajax调用都很AOP的增加操作: 

Ajax.Responders.register({
  onCreate: function() {
    Ajax.activeRequestCount++;
  },
  onComplete: function() {
    Ajax.activeRequestCount--;
  }
});

1.5 Event系列

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

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

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

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

还定义了一些标准KeyCode,KEY_BACKSPACE, KEY_TAB, KEY_RETURN, KEY_ESC, KEY_LEFT, KEY_UP, KEY_RIGHT, KEY_DOWN, KEY_DELETE, KEY_HOME, KEY_END, KEY_PAGEUP, KEY_PAGEDOWN

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

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

下例通过selector查找需要处理的链接(a),循环为每个链接添加观察者,为click事件,添加handle函数。   
 

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

另外,Form.Observer,Field.Observer 可以监控表单值的变化。

Misc

分享到:
评论

相关推荐

    prototype.js 1.4-1.6[全]

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

    prototype.js 实例

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

    prototype.js简介

    通过学习和使用prototype.js,开发者可以编写出结构更清晰、可维护性更强的JavaScript代码,同时也能提高开发效率,减少跨浏览器兼容性的烦恼。然而,随着ES6及后续版本的推出,许多prototype.js的功能已被原生...

    prototype.js javaScript插件

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

    jquery.uploadify-3.1.min.js

    jquery.uploadify-3.1.min.js 修改了SWFUpload.prototype.getFlashHTML ()方法,解决了在ie9在点击上传按钮后,不能弹出浏览文件的对话框问题。

    prototype_1.7.3.js 最新版本

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

    prototype.js中文手册

    它在Web开发中扮演着重要的角色,尤其在AJAX(异步JavaScript和XML)应用中,Prototype.js 提供了丰富的功能和工具,使得开发者能更高效地编写JavaScript代码。 ### 一、Prototype.js核心特性 1. **DOM操作**:...

    prototype.js

    Prototype.js的核心理念是通过扩展JavaScript的内置类型和添加实用工具方法,使开发者能更高效地编写代码。 一、Prototype.js的核心特性 1. **DOM操作**:Prototype.js为DOM元素提供了丰富的操作接口,如`Element....

    prototype.js文件使用和讲解

    - **对象扩展**:`prototype.js`提供了对JavaScript原生对象的扩展,如Array、String、Function等,增加了许多实用的方法,使得代码编写更为简洁。 - **DOM操作**:库中包含了一系列方便的DOM操作方法,如`Element....

    prototype.js 1.6

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

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

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

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

    prototype.js 是Sam Stephenson写的一个Javascript的小框架(实际上是一个函数库),该框架首页是:http://prototype.conio.net/  prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,...

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

    通过学习《prototype.js 1.4版开发者手册》,开发者可以掌握这些高级技巧,提高开发效率,编写出更加优雅和高效的JavaScript代码。同时,分享这份手册也是促进社区交流和共同进步的好方式,因为学习从来不是孤立的...

    javascript类库prototype.js

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

    prototype.js 以及 找到的 相关使用详细说明

    在压缩包中提供的`prototype.js开发手册.rar`文件,应该是Prototype.js的官方或社区编写的开发指南,它会详细介绍如何使用这个库的各个功能,包括基本用法、高级特性和最佳实践。通过阅读这份手册,开发者可以更深入...

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

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

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

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

    prototype.js.cn.doc.rar

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

    经典ajax.prototype.javascript实例-加载效果显示大图

    通过以上分析,我们可以看出这个“经典ajax.prototype.javascript实例-加载效果显示大图”是如何结合Ajax技术、DOM操作以及用户体验设计来实现动态加载和展示大图的。它展示了JavaScript在前端开发中的强大功能,...

Global site tag (gtag.js) - Google Analytics