1 Scripting Part II Jacco van Ossenbruggen CWI Amsterdam Partly based on the slides of Chapter 7 WEB TECHNOLOGIES: A COMPUTER SCIENCE PERSPECTIVE by JEFFREY.

Slides:



Advertisements
Similar presentations
JavaScript – Quiz #8 Lecture Code:
Advertisements

1/7 ITApplications XML Module Session 8: Introduction to Programming with XML.
Java Script Session1 INTRODUCTION.
The jQuery library. What is jQuery ? A javascript lightweight library Is very easy to use Is powerful Is cross-browser compatible Downloadable from jQuery.com,
JavaScript and the DOM Les Carr COMP3001 Les Carr COMP3001.
JQuery A Javascript Library Hard things made eas(ier) Norman White.
The Web Warrior Guide to Web Design Technologies
Chapter 7 © 2001 by Addison Wesley Longman, Inc. 1 Chapter 7 Sebesta: Programming the World Wide Web.
Ajax Dr Jim Briggs WEBP Ajax1. 2 Ajax Asynchronous JavaScript And XML Method of creating more interactive web applications Moves more of the application.
Dynamic Web Pages Bert Wachsmuth. Review  Internet, IP addresses, ports, client-server, http, smtp  HTML, XHTML, XML  Style Sheets, external, internal,
Does Ajax suck? CS575 Spring 2007 Chanwit Suebsureekul.
CST JavaScript Validating Form Data with JavaScript.
Prof. James A. Landay University of Washington Spring 2008 Web Interface Design, Prototyping, and Implementation Rich Internet Applications: AJAX, Server.
CP476 Internet Computing JavaScript and HTML1 1.JavaScript Execution Environment The JavaScript Window object represents the window in which the browser.
DHTML. What is DHTML?  DHTML is the combination of several built-in browser features in fourth generation browsers that enable a web page to be more.
JavaScript and The Document Object Model MMIS 656 Web Design Technologies Acknowledgements: 1.Notes from David Shrader, NSU GSCIS 2.Some material adapted.
JavaScript & jQuery the missing manual Chapter 11
Chapter 6 JavaScript and AJAX. Objectives Explain the purpose and history of JavaScript Describe JavaScript features Explain the event-driven nature of.
© Cheltenham Computer Training 2001 Macromedia Dreamweaver 4 - Slide No 1 Macromedia Dreamweaver 4 Advanced Level Course.
JQuery March 09 th,2009 Create by
JavaScript, Fourth Edition Chapter 12 Updating Web Pages with AJAX.
Event Handlers CS101 Introduction to Computing. Learning Goals Learn about event handlers Determine how events are useful in JavaScript Discover where.
Execution Environment for JavaScript " Java Script Window object represents the window in which the browser displays documents. " The Window object provides.
CNIT 133 Interactive Web Pags – JavaScript and AJAX JavaScript Environment.
1 rfXcel Confidential Copyright 2007 Web Technology JavaScript 12/10/07.
06/10/2015AJAX 1. 2 Introduction All material from AJAX – what is it? Traditional web pages and operation Examples of AJAX use Creating.
The Document Object Model. The Web B.D, A.D. They aren’t web pages, they’re document objects A web browser interprets structured information. A server.
INTRODUCTION TO JAVASCRIPT AND DOM Internet Engineering Spring 2012.
JavaScript, Part 3 Instructor: Charles Moen CSCI/CINF 4230.
INTRODUCTION TO HTML5 Using jQuery with HTML5. Introducing jQuery  Although it is not a part of any W3C or WHATWG specification, jQuery performs an important.
Extending HTML CPSC 120 Principles of Computer Science April 9, 2012.
Javascript II DOM & JSON. In an effort to create increasingly interactive experiences on the web, programmers wanted access to the functionality of browsers.
Lecture 10 JavaScript: DOM and Dynamic HTML Boriana Koleva Room: C54
Cs332a_chapt10.ppt CS332A Advanced HTML Programming DHTML Dynamic Hypertext Markup Language A term describing a series of technologies Not a stand-a-lone.
Asynchronous Javascript And XML AJAX : an introduction UFCEUS-20-2 : Web Programming.
CISC 3140 (CIS 20.2) Design & Implementation of Software Application II Instructor : M. Meyer Address: Course Page:
Review of the DOM Node properties and methods Some ways of accessing nodes Appending, copying and removing nodes Event handling – Inline – Scripting –
Introduction to Programming the WWW I CMSC Winter 2003 Lecture 12.
1 CSC160 Chapter 7: Events and Event Handlers. 2 Outline Event and event handlers onClick event handler onMouseOver event handler onMouseOut event handler.
INT222 - Internet Fundamentals Shi, Yue (Sunny) Office: T2095 SENECA COLLEGE.
Copyright © Terry Felke-Morris WEB DEVELOPMENT & DESIGN FOUNDATIONS WITH HTML5 7 TH EDITION Chapter 14 Key Concepts 1 Copyright © Terry Felke-Morris.
Event Handling & AJAX IT210 Web Systems. Question How do we enable users to dynamically interact with a website? Answer: Use mouse and keyboard to trigger.
Host Objects: Browsers and the DOM
Events Event Handling in JavaScript SoftUni Team Technical Trainers Software University
Web Technology (NCS-504) Prepared By Mr. Abhishek Kesharwani Assistant Professor,UCER Naini,Allahabad.
 AJAX technology  Rich User Experience  Characteristics  Real live examples  JavaScript and AJAX  Web application workflow model – synchronous vs.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved Chapter 7 Representing Web Data:
JQUERY AND AJAX
JavaScript and Ajax (JavaScript Environment) Week 6 Web site:
1 Using jQuery JavaScript & jQuery the missing manual (Second Edition)
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved Chapter 5 Host Objects: Browsers.
Ajax & Client-side Dynamic Web Gunwoo Park (Undergraduate)
JQuery.
DHTML.
JavaScript and Ajax (Ajax Tutorial)
Not a Language but a series of techniques
Web Development & Design Foundations with HTML5 7th Edition
Application with Cross-Platform GUI
AJAX.
JAVASCRIPTS AND HTML DOCUMENTS
AJAX.
Chapter 7 Representing Web Data: XML
AJAX Robin Burke ECT 360.
CHAPTER 7 JavaScripts & HTML Documents
JavaScript & jQuery AJAX.
Introduction to DHTML, the DOM, JS review
JavaScript and Events CS Programming Languages for Web Applications
CHAPTER 6 EVENTS. CHAPTER 6 EVENTS WHAT IS AN EVENT?
Creating dynamic/interactive web pages
JavaScript and Events CS Programming Languages for Web Applications
Presentation transcript:

1 Scripting Part II Jacco van Ossenbruggen CWI Amsterdam Partly based on the slides of Chapter 7 WEB TECHNOLOGIES: A COMPUTER SCIENCE PERSPECTIVE by JEFFREY C. JACKSON

2 Today’s agenda Done: HTML, CSS, XML, JavaScript Key remaining technologies for building Web applications: –DOM Document Object Model –Events Event-driven programming –AJAX Asynchronous JavaScript and XML

3 DOM API Document Object Model Application Programming Interface

4 DOM The Document Object Model (DOM) is an API that allows programs to interact with HTML (or XML) documents –W3C recommendations define standard DOM –In browsers, the JavaScript version of the API is provided via the document host object –DOM APIs for Java and many other languages are also available

5 DOM History and Levels Very simple DOM was part of Netscape 2.0 Starting with Netscape 4.0 and IE 4.0, browser DOM API’s diverged significantly W3C responded quickly with DOM Level 1 (Oct 1998) and subsequently DOM Level 2 This course: JavaScript API for DOM2

6 Document Tree Recall that HTML document elements form a tree structure DOM allows scripts to access and modify the document tree html headbody p em title strong

7 Document Tree There are various types of nodes in the DOM document tree, representing elements, text, comments, the document type declaration, etc. Every Object in the DOM document tree has properties and methods defined by the Node host object

8 Example: Collapse text block Adding & removing nodes to/from the tree –using JavaScript & DOM Example provided by Jeffrey C. Jackson

9 Adding nodes to the tree First element of ordered list. Second element. Third element. Paragraph following the list (does not collapse). Body of original HTML document: JS function called when document is loaded id used later to collapse ordered list No “Click to collapse” button?

10 Adding nodes to the tree Click to collapse First element of ordered list. Second element. Third element. Paragraph following the list (does not collapse). Effect of executing makeCollapsible() after loading: div & button added to DOM tree

Adding nodes to the tree function makeCollapsible(elementId) { var element = window.document.getElementById(elementId); if (element) { var div = window.document.createElement("div"); element.parentNode.insertBefore(div, element); var button = window.document.createElement("button"); div.appendChild(button); button.setAttribute("type", "button"); var buttonText = window.document.createTextNode("Click to collapse"); button.appendChild(buttonText); button.setAttribute("onclick", "toggleVisibility(this,'" + elementId + "');"); } return; } 11 Node creation argument: id of html element (collapse1)

Adding nodes to the tree function makeCollapsible(elementId) { var element = window.document.getElementById(elementId); if (element) { var div = window.document.createElement("div"); element.parentNode.insertBefore(div, element); var button = window.document.createElement("button"); div.appendChild(button); button.setAttribute("type", "button"); var buttonText = window.document.createTextNode("Click to collapse"); button.appendChild(buttonText); button.setAttribute("onclick", "toggleVisibility(this,'" + elementId + "');"); } return; } 12 Node addition to DOM tree

Adding nodes to the tree function makeCollapsible(elementId) { var element = window.document.getElementById(elementId); if (element) { var div = window.document.createElement("div"); element.parentNode.insertBefore(div, element); var button = window.document.createElement("button"); div.appendChild(button); button.setAttribute("type", "button"); var buttonText = window.document.createTextNode("Click to collapse"); button.appendChild(buttonText); button.setAttribute("onclick", "toggleVisibility(this,'" + elementId + "');"); } return; } 13 Attribute addition

14 Adding nodes to the tree Before clicking button:After clicking button:

Adding nodes to the tree function toggleVisibility(button, elementId) { var element = window.document.getElementById(elementId); if (element) { if (element.style.display == "none") { element.style.display = "block"; button.childNodes[0].data = "Click to collapse"; } else { element.style.display = "none"; button.childNodes[0].data = "Click to expand"; } return; } 15 direct ref to button, id of element to be collapsed

Adding nodes to the tree function toggleVisibility(button, elementId) { var element = window.document.getElementById(elementId); if (element) { if (element.style.display == "none") { element.style.display = "block"; button.childNodes[0].data = "Click to collapse"; } else { element.style.display = "none"; button.childNodes[0].data = "Click to expand"; } return; } 16 Toggle display CSS style property

Adding nodes to the tree function toggleVisibility(button, elementId) { var element = window.document.getElementById(elementId); if (element) { if (element.style.display == "none") { element.style.display = "block"; button.childNodes[0].data = "Click to collapse"; } else { element.style.display = "none"; button.childNodes[0].data = "Click to expand"; } return; } 17 Modifying text.

18 Recap We’ve used the DOM api to: create new element nodes and text nodes var e = document.createElement(“tag name”); var t = document.createTextNode(“some text”); Add them to the tree var p = document.getElementById(“myid1”); p.appendChild(e); p.insertBefore(e,childNode); Modify content p.childNodes[0].data = “Some text” Modify attributes e.setAttribute(“name”, “value”); Not shown: p.removeChild(e); p.replaceChild(e,t); This is how you can change anything you like on the page!

19 DOM versus SAX DOM allows operation on the complete tree –but requires loading of the complete tree first –well suited for manipulating document already loaded in browser –not suited for really large documents that would not have to be loaded otherwise (memory consumption) –not suited for streaming content Popular alternative API is SAX –Simple API for XML –Pros and cons: see lab question 10 …

20 Event-driven programming Events & event handling

21 Events DOM allows you to modify the document… But when should this all happen? –when should the button be added to the tree? –when should the visibility toggle happen?

22 Events: onload & onclick Click to collapse First element of ordered list. Second element. Third element. Paragraph following the list (does not collapse).

23 Programming styles Batch programming: Programmer determines the flow of control, e.g. 1.Initialisation 2.Read input 3.Process input 4.Print results 5.End

24 Programming styles Event-driven programming: “events” happening outside the program determine the flow 1.Initialisation 2.while(forever) wait until some event happens react on event

25 Example applications: GUI application waiting on the user to select a menu, click on a button, press a key –browser, client, word processor Web server waiting for a request to come in from the network Timer application waiting for an alarm to expire (e.g. backup service) XML application waiting on a SAX parsing event

26 Programming styles Event-driven programming: “events” happening outside the program determine the flow 1.Initialisation 2.while(forever) wait until some event happens react on event

27 Programming styles (SAX) Event-driven programming: “events” happening outside the program determine the flow 1.Initialisation (tell SAX which input document to parse) 2.while(forever) wait for event (read open/close tag, attribute, text, …) react on event (write output, ….)

28 Programming styles (browser) Event-driven programming: “events” happening outside the program determine the flow 1.Initialisation (load and display document) 2.while(forever) wait for event (mouse click/move, key press/release, network) react on event (follow link, call JavaScript function, …)

29 Pre-defined events W3C DOM Recommendation –click, dblclick, mousedown, mouseup, mouseover, mousemove, mouseout –keypress, keydown, keyup –resize, scroll W3C HTML Recommendation –load, unload, abort, error –focus, blur –submit, reset –select, change Many events have corresponding attributes in HTML

30 Programming styles Event-driven programming: “events” happening outside the program determine the flow 1.Initialisation 2.while(forever) wait until some event happens react on event

31 Event programming Typically, the main loop is hidden in somebody else's code (e.g. in the browser) –The “Don’t call us, we call you” principle How do you get your code to be executed in response to a particular event that happens? –You write a function to do the work (this function is known as the handler or listener) –You subscribe the function to the event (a.k.a. binding the function to the event, or registering the function with the event)

32 Programming styles Event-driven programming: “events” happening outside the program determine the flow 1.Initialisation subscribe handlers 2.while(forever) wait until some event happens check subscriptions for relevant handlers your job someone else’s job

33 Event handler example // f turns background to silver // and ignores event: function f(myevent) { document.body.style.backgroundColor = silver; } // subscribe f to click events on the body: document.body.addEventListener("click", f, …);

34 Event: ”bubbling” DOM specifies the behaviour in detail (not part of exam) p ul li a What happens if all 4 elements have different handlers subscribed to “click” and the use clicks on the element?

Recap For web applications, we can use JavaScript as a programming language to program interactive behavior We use DOM to manipulate the document interactively We use events and handlers to define which JavaScript functions need to be called when Only key ingredient still missing is: –how to do partial page updates with new data from the server? 35

36 AJAX (lab question 15)

37 AJAX cookbook recipe 1.Make initial page Using XHTML, CSS, JS Components 2.Set up event handlers functions Using JS functions, DOM events 3.When called, handlers do the magic 1.(async.) request new (XML) data from server over http 2.Update document using DOM tree

38 How to get data from the server? var xhr = new XMLHttpRequest(); xhr.onreadystatechange=function() { if(xhr.readyState==4){ result=xhr.responseText; /* update DOM with result */ } xhr.open("GET",“ xhr.send(null); object available in most browsers HTTP GET request send request to server with no parameters handler function that does the work

39 AJAX advantages Popular since 2005 –Google Suggest, later Google maps Used now by many other popular sites – facebook, deli.ci.ous, A9, etc. Smooth interface without total page refresh Small incremental updates makes site faster with less load on the server No new technology needed, build on XHTML, CSS, XML, DOM, JavaScript –“zero install” applications Extended AJAX implementations –synchronous –other languages than JavaScript –other data formats than XML (JSON)

40 AJAX disadvantages weak browser integration –hard to get back button to work as expected search engine –findability of information accessibility –interaction dependents on JavaScript response time –client may wait for new XML data without the user knowing why web analytics –analysis of sever logs, #hits

41 Learning goals Understand –how you can add, remove, change elements and attributes in a page using the DOM –the concept of events and event handlers –how modern websites use AJAX to update pages with new data from the server without reload

42 Client versus server side HTML, CSS, JavaScript and DOM –Note: all techniques that play a role at the client (browser) side Monday we will discuss –how a web server works –accessibility aspects of Web content