SlideShare a Scribd company logo
Julie Iskander, Lecturer at ITI
MSc. Communication and Electronics
LectureOutlines
 Object Oriented JavaScript Revision
 Prototype js
 Extending the DOM
 Elements dimensions
 Event Model
 Classes and inheritance
 JSON
 Ajax
OO JavaScript
Remember
 Everything is an Object
 Every Object can have instance methods
 All objects have prototype
 Functions are first-class Objects
 JavaScript is multi-paradigm language
 Imperative style of C
 Object oriented style of Java
 Functional style of Lisp
Prototype Framework
Prototype JS
Prototype
Prototype
 It is about the abstract not the concrete
 Many toolkits is built over it like script.aculo.us
$ Function
 $()  document.getElementById()
 $(‘menu’)  returns element with id=menu
 $(element)  if element is a node, it is returned back
 $(‘menu’,’menuitem1’,’menuitem2’)  return an array of 3
nodes id=menu and menuitem1 and menuitem2
 $ extends node returned with useful prototype node
methods
$$ Function
 $$(), selects node using CSS selectors, support CSS3 selectors
 $$(‘li’)  select all li elements
 $$(‘li.current’)  select all li elements of class=current
 $$(‘#menu a’) select element all a elements inside of
element with id=menu
 $$ extends nodes returned with useful prototype node
methods
Enumerable Object
 A mixin that provides methods useful for collections
 Use in the following classes
 Array
 Hash
 DOM- related objects
 Instance Methods:
 all; any; collect; detect; each; eachSlice; entries; every; filter;
find; find;All; grep; include; inGroupsOf; inject; inspect; invoke;
map; max; member; min; partition; pluck; reject; select; size;
some; sortBy; toArray; zip
each
 elem.each(Visitor object)
 Implements visitor on each element
 Example:
[1,3,4,7,89,6,3,4,5].each(function(elem)
{
alert(elem);
});
each
 Implement continue using return
 Example:
[1,3,4,7,89,6,3,4,5].each(function(elem)
{
if(elem>10)
return;
alert(elem);
});
each
 Implement break by throw $break
 Example:
[1,3,4,7,89,6,3,4,5].each(function(elem)
{
if(elem>10)
return;
if(elem==4)
throw $break;
alert(elem);
});
detect
 Takes function that returns true/false
 Returns first element that returns true
 If no match returns undefined
 Examples:
[1,3,4,6,8,0,9].detect(function(elem)
{
return elem==0
}));
 See also select, reject, partition
map
 Applies function on each element, pushes the
return into an array that is eventually returned
 Example:
[2, 5, 7, 9,50].map(function(item)
{
return item*item;
});
Extending DOM
Prototype’s DOM extension
Modifying properties of elements
Visibility
 .hide()
 .show()
 .visible()  returns true/false
 .toggle()
Prototype’s DOM extension
Modifying properties of elements
Style and classes
 .addClassName(‘class name’)
 .removeClassName(‘class name’)
 .hasClassName(‘class name’) returns true/false
 .toggleClassName(‘class name’)
 .setStyle({ prop:val,prop:val,……… })
 .getStyle(‘css property’)
Prototype’s DOM extension
Modifying DOM
.update(‘ ’)
Change content of element
.replace(‘ ’)
 Remove element and add a new one in its place
.insert(‘ ’), insert({top:’ ’,bottom:’ ‘, after:’
‘, before : ‘ ’ })
.remove()
Templates
Templates
 TheTemplate class uses a basic formatting syntax, similar to
Ruby.
 The templates are created from strings that use symbols in
the form (e.g., #{fieldName})
 The symbols are replaced by actual values when the
template is applied (evaluated) to an object.
Example
var myTemplate =
newTemplate('<p>The TV show #{title} was directed
by  #{author}.</p>');
// Create hashes with the required values for placeholders
var record1 = {title: 'Metrix', author:'Arun Pandey'};
var record2 = {title: 'Junoon', author:'Manusha'};
var record3 = {title: 'Red Moon', author:'Paul, John'};
var record4 = {title: 'Henai', author:'Robert'};
Example
var records = [record1, record2, record3, record4 ];
// Now apply template to produce desired formatted output
records.each( function(conv)
{
$$('p')[0].insert( {bottom: "<div>Formatted Output : " +
myTemplate.evaluate(conv)+"</div>" });
});
}
Prototype Framework
Form Management
Prototype Form Methods
 disable() Disables the form as whole. Form controls will
be visible but uneditable.
 enable() Enables a fully or partially disabled form.
Prototype Form Methods
 findFirstElement() Finds first non-hidden, non-disabled
form control.
 focusFirstElement() Gives keyboard focus to the first
element of the form.
 getElements() Returns a collection of all form controls
within a form.
Prototype Form Methods
 getInputs() Returns a collection of all INPUT elements in a
form. Use optional type and name arguments to restrict the
search on these attributes.
 request() A convenience method for serializing and
submitting the form via an Ajax.Request to the URL of the
form's action attribute.The options parameter is passed to
the Ajax.Request instance, allowing to override the HTTP
method and to specify additional parameters.
 reset() Resets a form to its default values.
Element Dimensions
Element Dimension
 Solve problem of inconsistent browser
measurements
 .measure(‘ property‘ )
 $(‘mydiv’).measure(‘width’)  pixel values
 For better performance, when measuring more than
one dimension
 .getLayout()  Layout object
 $(‘mydiv’).getLayout().get(‘width’);
 http://prototypejs.org/learn/element-layout
Event Model
Events
 A single model for all browsers
 Event.observe(element,’event’,function{}())
 Event.observe(window,’load’,function(){})
Element.observe
 $(‘ ’).observe(‘event’,function(){})
Events
 Can register events on elements or children of an
element.
 The selection of children is done using CSS-selectors
 Element.on
 $(‘ ’).on(‘event’,function(){})
 $(‘ ’).on(‘event’,’css selector for child’,function(){})
 $(‘item’).on(‘click’,’li’, function(){
………………
});
Event Object
 All event handlers are receive an event object
 function submitFun(evnt)
{
evnt.element() //returns element object that triggered event
evnt.preventDefault() //stop default behaviour
evnt.isLeftClick() or isRightClick() or isMiddleClick()
evnt.pointerX() or pointerY()
evnt.pointer()  object{x: , y: }
}
Classes and Inheritance
Class
 Manages Prototype’s class-based OOP system
 Class methods:
 create()
 Instance Methods:
 addMethods()
Class.create([superclass][, methods...])
 superclass (class): superclass to inherit from.
 method (object): an object (mix-in) that will be mixed-in to my
new class. Multiple mixins can be used, later mixins take
precedence.
 returns a constructor function that can be called using new
operator. It will invoke the initialize method.
 The object mixin must contain ‘initialize’ method to be called
when new is called.
Class.create()
var Person = Class.create({
initialize: function(name) { this.name = name; },
say: function(message) {
return this.name + ': ' + message;
}
});
Example
 Create your own class that’s mixed with
Enumerable
Var MyClass=Class.Create(Enumerable, {
initialize:function(){………….},
_each: function(iterator){
for(var i=0;i<……)
{
iterator(….);
}
}
});
JSON
Encoding
 Number#toJSON, String#toJSON,Array#toJSON, Hash#toJSON, Date#toJSON, and
Object.toJSON.
 var data = {name: 'Violet', occupation: 'character', age: 25 };
 Object.toJSON(data); //-> '{"name": "Violet", "occupation": "character", "age": 25}’
 For custom objects,
 Set toJSON method which will be used by Object.toJSON.
 var Person = Class.create({
 initialize: function(name) {
 this.name = name;
 },
 toJSON: function() {
 return ('My name is ' + this.name + ' and I am ' + this.age + ' years old.').toJSON();
 }
 });
 var john = new Person('John', 49);
 Object.toJSON(john); //-> '"My name is John and I am 49 years old.”’
Parsing
 String#evalJSON
 var data = '{ "name": "Violet", "occupation": "character"
}'.evalJSON();
 data.name; //-> "Violet”
Ajax
Ajax
 A wrapper class around the XMLHttpRequest
 Uses callbacks to handle different phases of the
asynchronous request.
 If requested page is a JavaScript code then it is automatically
evaluated and executed.
Ajax.Request
new Ajax.Request(URL, Option)
 URL : string representing the url to request
 Options hash
 method
 parameters
 contentType
 onSuccess
 onFailure
 For complete details:
 http://api.prototypejs.org/ajax/
Ajax.Updater
 Updates a portion of the DOM with external source
 new Ajax.Updater(ID , URL , Options)
 ID: the id of the element to be updated
 URL: url to fetch
 Options: hash same as previous
 insertion: Insertion.Top
Insertion.Bottom
Insertion.After
Insertion.Before
Ajax.PeriodicalUpdater
 Runs Updater in periodical Intervals to repeatedly fetch
content from the server.
 new Ajax.PeriodicalUpdater(ID, URL, Options)
 Same except Options
 frequency : interval in seconds
 decay : factor to multiply frequency by everytime the fetched
response is the same as the previously fetched.
 stop()
 start()
References
 http://prototypejs.org/
 Practical Prototype and script.aculo.us, Andrew
Dupont , 2008

More Related Content

What's hot (20)

PPTX
jQuery
Julie Iskander
 
PDF
JavaScript Fundamentals with Angular and Lodash
Bret Little
 
PPTX
Build your own entity with Drupal
Marco Vito Moscaritolo
 
PPTX
DOM and Events
Julie Iskander
 
PPTX
Working With JQuery Part1
saydin_soft
 
PPTX
ActionScript3 collection query API proposal
Slavisa Pokimica
 
PPT
Spsl v unit - final
Sasidhar Kothuru
 
ODP
#pugMi - DDD - Value objects
Simone Gentili
 
PDF
Ms Ajax Dom Element Class
jason hu 金良胡
 
PDF
jQuery 1.7 visual cheat sheet
Jiby John
 
PDF
Jquery 17-visual-cheat-sheet1
Michael Andersen
 
PDF
Backbone.js: Run your Application Inside The Browser
Howard Lewis Ship
 
PDF
Python programming : Classes objects
Emertxe Information Technologies Pvt Ltd
 
PDF
اسلاید جلسه ۹ کلاس پایتون برای هکر های قانونی
Mohammad Reza Kamalifard
 
PDF
Drupal Entities - Emerging Patterns of Usage
Ronald Ashri
 
PDF
A evolução da persistência de dados (com sqlite) no android
Rodrigo de Souza Castro
 
PDF
Your Entity, Your Code
Marco Vito Moscaritolo
 
DOCX
Python Metaclasses
Nikunj Parekh
 
PDF
Hello Swift Final 5/5 - Structures and Classes
Cody Yun
 
PPTX
OO in JavaScript
Gunjan Kumar
 
JavaScript Fundamentals with Angular and Lodash
Bret Little
 
Build your own entity with Drupal
Marco Vito Moscaritolo
 
DOM and Events
Julie Iskander
 
Working With JQuery Part1
saydin_soft
 
ActionScript3 collection query API proposal
Slavisa Pokimica
 
Spsl v unit - final
Sasidhar Kothuru
 
#pugMi - DDD - Value objects
Simone Gentili
 
Ms Ajax Dom Element Class
jason hu 金良胡
 
jQuery 1.7 visual cheat sheet
Jiby John
 
Jquery 17-visual-cheat-sheet1
Michael Andersen
 
Backbone.js: Run your Application Inside The Browser
Howard Lewis Ship
 
Python programming : Classes objects
Emertxe Information Technologies Pvt Ltd
 
اسلاید جلسه ۹ کلاس پایتون برای هکر های قانونی
Mohammad Reza Kamalifard
 
Drupal Entities - Emerging Patterns of Usage
Ronald Ashri
 
A evolução da persistência de dados (com sqlite) no android
Rodrigo de Souza Castro
 
Your Entity, Your Code
Marco Vito Moscaritolo
 
Python Metaclasses
Nikunj Parekh
 
Hello Swift Final 5/5 - Structures and Classes
Cody Yun
 
OO in JavaScript
Gunjan Kumar
 

Similar to Prototype Framework (20)

PPTX
Java scriptforjavadev part2a
Makarand Bhatambarekar
 
PPTX
Cordova training : Day 4 - Advanced Javascript
Binu Paul
 
PDF
fuser interface-development-using-jquery
Kostas Mavridis
 
KEY
User Interface Development with jQuery
colinbdclark
 
PDF
JavaScript
Bharti Gupta
 
PPT
Introduction to Prototype JS Framework
Mohd Imran
 
PPTX
UNIT 1 (7).pptx
DrDhivyaaCRAssistant
 
PPT
Eugene Andruszczenko: jQuery
Refresh Events
 
PPT
jQuery Presentation - Refresh Events
Eugene Andruszczenko
 
KEY
JavaScript Neednt Hurt - JavaBin talk
Thomas Kjeldahl Nilsson
 
PPT
jQuery with javascript training by Technnovation Labs
Prasad Shende
 
PPT
JavaScript Needn't Hurt!
Thomas Kjeldahl Nilsson
 
PPTX
All of Javascript
Togakangaroo
 
KEY
An in-depth look at jQuery
Paul Bakaus
 
PDF
Functional Javascript
guest4d57e6
 
PDF
Building a JavaScript Library
jeresig
 
PDF
Javascript
Adil Jafri
 
PPTX
Java script
Adrian Caetano
 
PPT
Introduction to jQuery
Andres Baravalle
 
PDF
What's up with Prototype and script.aculo.us?
Christophe Porteneuve
 
Java scriptforjavadev part2a
Makarand Bhatambarekar
 
Cordova training : Day 4 - Advanced Javascript
Binu Paul
 
fuser interface-development-using-jquery
Kostas Mavridis
 
User Interface Development with jQuery
colinbdclark
 
JavaScript
Bharti Gupta
 
Introduction to Prototype JS Framework
Mohd Imran
 
UNIT 1 (7).pptx
DrDhivyaaCRAssistant
 
Eugene Andruszczenko: jQuery
Refresh Events
 
jQuery Presentation - Refresh Events
Eugene Andruszczenko
 
JavaScript Neednt Hurt - JavaBin talk
Thomas Kjeldahl Nilsson
 
jQuery with javascript training by Technnovation Labs
Prasad Shende
 
JavaScript Needn't Hurt!
Thomas Kjeldahl Nilsson
 
All of Javascript
Togakangaroo
 
An in-depth look at jQuery
Paul Bakaus
 
Functional Javascript
guest4d57e6
 
Building a JavaScript Library
jeresig
 
Javascript
Adil Jafri
 
Java script
Adrian Caetano
 
Introduction to jQuery
Andres Baravalle
 
What's up with Prototype and script.aculo.us?
Christophe Porteneuve
 
Ad

More from Julie Iskander (20)

PPTX
HTML 5
Julie Iskander
 
PPTX
Data structures and algorithms
Julie Iskander
 
PPTX
C for Engineers
Julie Iskander
 
PPTX
Design Pattern lecture 3
Julie Iskander
 
PPTX
Scriptaculous
Julie Iskander
 
PPTX
Design Pattern lecture 4
Julie Iskander
 
PPTX
Design Pattern lecture 2
Julie Iskander
 
PPTX
Design Pattern lecture 1
Julie Iskander
 
PPTX
Ajax and ASP.NET AJAX
Julie Iskander
 
PPTX
ASP.NET Lecture 5
Julie Iskander
 
PPTX
ASP.NET lecture 8
Julie Iskander
 
PPTX
ASP.NET Lecture 7
Julie Iskander
 
PPTX
ASP.NET Lecture 6
Julie Iskander
 
PPTX
ASP.NET Lecture 4
Julie Iskander
 
PPTX
ASP.NET Lecture 3
Julie Iskander
 
PPTX
ASP.NET Lecture 2
Julie Iskander
 
PPTX
ASP.NET Lecture 1
Julie Iskander
 
PPTX
AJAX and JSON
Julie Iskander
 
PPTX
Introduction to Client-Side Javascript
Julie Iskander
 
PPTX
HTML and CSS part 3
Julie Iskander
 
Data structures and algorithms
Julie Iskander
 
C for Engineers
Julie Iskander
 
Design Pattern lecture 3
Julie Iskander
 
Scriptaculous
Julie Iskander
 
Design Pattern lecture 4
Julie Iskander
 
Design Pattern lecture 2
Julie Iskander
 
Design Pattern lecture 1
Julie Iskander
 
Ajax and ASP.NET AJAX
Julie Iskander
 
ASP.NET Lecture 5
Julie Iskander
 
ASP.NET lecture 8
Julie Iskander
 
ASP.NET Lecture 7
Julie Iskander
 
ASP.NET Lecture 6
Julie Iskander
 
ASP.NET Lecture 4
Julie Iskander
 
ASP.NET Lecture 3
Julie Iskander
 
ASP.NET Lecture 2
Julie Iskander
 
ASP.NET Lecture 1
Julie Iskander
 
AJAX and JSON
Julie Iskander
 
Introduction to Client-Side Javascript
Julie Iskander
 
HTML and CSS part 3
Julie Iskander
 
Ad

Recently uploaded (20)

PDF
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
The Future of Artificial Intelligence (AI)
Mukul
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 

Prototype Framework

  • 1. Julie Iskander, Lecturer at ITI MSc. Communication and Electronics
  • 2. LectureOutlines  Object Oriented JavaScript Revision  Prototype js  Extending the DOM  Elements dimensions  Event Model  Classes and inheritance  JSON  Ajax
  • 4. Remember  Everything is an Object  Every Object can have instance methods  All objects have prototype  Functions are first-class Objects  JavaScript is multi-paradigm language  Imperative style of C  Object oriented style of Java  Functional style of Lisp
  • 8. Prototype  It is about the abstract not the concrete  Many toolkits is built over it like script.aculo.us
  • 9. $ Function  $()  document.getElementById()  $(‘menu’)  returns element with id=menu  $(element)  if element is a node, it is returned back  $(‘menu’,’menuitem1’,’menuitem2’)  return an array of 3 nodes id=menu and menuitem1 and menuitem2  $ extends node returned with useful prototype node methods
  • 10. $$ Function  $$(), selects node using CSS selectors, support CSS3 selectors  $$(‘li’)  select all li elements  $$(‘li.current’)  select all li elements of class=current  $$(‘#menu a’) select element all a elements inside of element with id=menu  $$ extends nodes returned with useful prototype node methods
  • 11. Enumerable Object  A mixin that provides methods useful for collections  Use in the following classes  Array  Hash  DOM- related objects  Instance Methods:  all; any; collect; detect; each; eachSlice; entries; every; filter; find; find;All; grep; include; inGroupsOf; inject; inspect; invoke; map; max; member; min; partition; pluck; reject; select; size; some; sortBy; toArray; zip
  • 12. each  elem.each(Visitor object)  Implements visitor on each element  Example: [1,3,4,7,89,6,3,4,5].each(function(elem) { alert(elem); });
  • 13. each  Implement continue using return  Example: [1,3,4,7,89,6,3,4,5].each(function(elem) { if(elem>10) return; alert(elem); });
  • 14. each  Implement break by throw $break  Example: [1,3,4,7,89,6,3,4,5].each(function(elem) { if(elem>10) return; if(elem==4) throw $break; alert(elem); });
  • 15. detect  Takes function that returns true/false  Returns first element that returns true  If no match returns undefined  Examples: [1,3,4,6,8,0,9].detect(function(elem) { return elem==0 }));  See also select, reject, partition
  • 16. map  Applies function on each element, pushes the return into an array that is eventually returned  Example: [2, 5, 7, 9,50].map(function(item) { return item*item; });
  • 18. Prototype’s DOM extension Modifying properties of elements Visibility  .hide()  .show()  .visible()  returns true/false  .toggle()
  • 19. Prototype’s DOM extension Modifying properties of elements Style and classes  .addClassName(‘class name’)  .removeClassName(‘class name’)  .hasClassName(‘class name’) returns true/false  .toggleClassName(‘class name’)  .setStyle({ prop:val,prop:val,……… })  .getStyle(‘css property’)
  • 20. Prototype’s DOM extension Modifying DOM .update(‘ ’) Change content of element .replace(‘ ’)  Remove element and add a new one in its place .insert(‘ ’), insert({top:’ ’,bottom:’ ‘, after:’ ‘, before : ‘ ’ }) .remove()
  • 22. Templates  TheTemplate class uses a basic formatting syntax, similar to Ruby.  The templates are created from strings that use symbols in the form (e.g., #{fieldName})  The symbols are replaced by actual values when the template is applied (evaluated) to an object.
  • 23. Example var myTemplate = newTemplate('<p>The TV show #{title} was directed by #{author}.</p>'); // Create hashes with the required values for placeholders var record1 = {title: 'Metrix', author:'Arun Pandey'}; var record2 = {title: 'Junoon', author:'Manusha'}; var record3 = {title: 'Red Moon', author:'Paul, John'}; var record4 = {title: 'Henai', author:'Robert'};
  • 24. Example var records = [record1, record2, record3, record4 ]; // Now apply template to produce desired formatted output records.each( function(conv) { $$('p')[0].insert( {bottom: "<div>Formatted Output : " + myTemplate.evaluate(conv)+"</div>" }); }); }
  • 27. Prototype Form Methods  disable() Disables the form as whole. Form controls will be visible but uneditable.  enable() Enables a fully or partially disabled form.
  • 28. Prototype Form Methods  findFirstElement() Finds first non-hidden, non-disabled form control.  focusFirstElement() Gives keyboard focus to the first element of the form.  getElements() Returns a collection of all form controls within a form.
  • 29. Prototype Form Methods  getInputs() Returns a collection of all INPUT elements in a form. Use optional type and name arguments to restrict the search on these attributes.  request() A convenience method for serializing and submitting the form via an Ajax.Request to the URL of the form's action attribute.The options parameter is passed to the Ajax.Request instance, allowing to override the HTTP method and to specify additional parameters.  reset() Resets a form to its default values.
  • 31. Element Dimension  Solve problem of inconsistent browser measurements  .measure(‘ property‘ )  $(‘mydiv’).measure(‘width’)  pixel values  For better performance, when measuring more than one dimension  .getLayout()  Layout object  $(‘mydiv’).getLayout().get(‘width’);  http://prototypejs.org/learn/element-layout
  • 33. Events  A single model for all browsers  Event.observe(element,’event’,function{}())  Event.observe(window,’load’,function(){}) Element.observe  $(‘ ’).observe(‘event’,function(){})
  • 34. Events  Can register events on elements or children of an element.  The selection of children is done using CSS-selectors  Element.on  $(‘ ’).on(‘event’,function(){})  $(‘ ’).on(‘event’,’css selector for child’,function(){})  $(‘item’).on(‘click’,’li’, function(){ ……………… });
  • 35. Event Object  All event handlers are receive an event object  function submitFun(evnt) { evnt.element() //returns element object that triggered event evnt.preventDefault() //stop default behaviour evnt.isLeftClick() or isRightClick() or isMiddleClick() evnt.pointerX() or pointerY() evnt.pointer()  object{x: , y: } }
  • 37. Class  Manages Prototype’s class-based OOP system  Class methods:  create()  Instance Methods:  addMethods()
  • 38. Class.create([superclass][, methods...])  superclass (class): superclass to inherit from.  method (object): an object (mix-in) that will be mixed-in to my new class. Multiple mixins can be used, later mixins take precedence.  returns a constructor function that can be called using new operator. It will invoke the initialize method.  The object mixin must contain ‘initialize’ method to be called when new is called.
  • 39. Class.create() var Person = Class.create({ initialize: function(name) { this.name = name; }, say: function(message) { return this.name + ': ' + message; } });
  • 40. Example  Create your own class that’s mixed with Enumerable
  • 41. Var MyClass=Class.Create(Enumerable, { initialize:function(){………….}, _each: function(iterator){ for(var i=0;i<……) { iterator(….); } } });
  • 42. JSON
  • 43. Encoding  Number#toJSON, String#toJSON,Array#toJSON, Hash#toJSON, Date#toJSON, and Object.toJSON.  var data = {name: 'Violet', occupation: 'character', age: 25 };  Object.toJSON(data); //-> '{"name": "Violet", "occupation": "character", "age": 25}’  For custom objects,  Set toJSON method which will be used by Object.toJSON.  var Person = Class.create({  initialize: function(name) {  this.name = name;  },  toJSON: function() {  return ('My name is ' + this.name + ' and I am ' + this.age + ' years old.').toJSON();  }  });  var john = new Person('John', 49);  Object.toJSON(john); //-> '"My name is John and I am 49 years old.”’
  • 44. Parsing  String#evalJSON  var data = '{ "name": "Violet", "occupation": "character" }'.evalJSON();  data.name; //-> "Violet”
  • 45. Ajax
  • 46. Ajax  A wrapper class around the XMLHttpRequest  Uses callbacks to handle different phases of the asynchronous request.  If requested page is a JavaScript code then it is automatically evaluated and executed.
  • 47. Ajax.Request new Ajax.Request(URL, Option)  URL : string representing the url to request  Options hash  method  parameters  contentType  onSuccess  onFailure  For complete details:  http://api.prototypejs.org/ajax/
  • 48. Ajax.Updater  Updates a portion of the DOM with external source  new Ajax.Updater(ID , URL , Options)  ID: the id of the element to be updated  URL: url to fetch  Options: hash same as previous  insertion: Insertion.Top Insertion.Bottom Insertion.After Insertion.Before
  • 49. Ajax.PeriodicalUpdater  Runs Updater in periodical Intervals to repeatedly fetch content from the server.  new Ajax.PeriodicalUpdater(ID, URL, Options)  Same except Options  frequency : interval in seconds  decay : factor to multiply frequency by everytime the fetched response is the same as the previously fetched.  stop()  start()