Writing with YUI. Doug Bell Developer / Janitor

Size: px
Start display at page:

Download "Writing with YUI. Doug Bell Developer / Janitor"

Transcription

1 Writing with YUI Doug Bell Developer / Janitor doug@plainblack.com

2 JavaScript An Epic Tale Interface with Java Applets Has been standardized (EMCAScript) Annoying features being avoided / disabled Featureful, Intuitive, Dynamic User Interfaces Break out of Stagnant Static Sites From Harmful To Helpful

3 JavaScript An Epic Tale Programmer s Perspective JavaScript Sucks in Web Browsers Non-standard Implementations Different behaviors between standard implementations Some simple tasks are made difficult Into the gap: JavaScript Libraries

4 Which One? Dojo, Prototype, Scriptaculous, jquery October Community weighs in Consensus: Yahoo User Interface (YUI)

5 Why YUI? Free as in Speech Free as in Beer Backed by Yahoo Well-Supported Well-defined Levels of Support (Graded Support) Fully-featured API Extensible API Well-Documented

6 What is YUI? A satellite view

7 YUI Components YUI Core Base of the system DOM and Event handling Normalization Utilities Components to build applications Connection Manager for XmlHttpRequest (aka AJAX) Animation and Drag and Drop

8 YUI Components Controls / Widgets AutoComplete Calendar, Color Picker, Rich Text Editor, Slider TabView CSS Tools Reset Base Font Grids TreeView

9 In this Session YUI Core DOM Event Animation Connection We ll create a functional, if a bit silly, Asset...

10 Shoutbox Users can chat real-time on your website

11 Shoutbox Under the hood Default view Handles the normal view of the asset Creates the form for input JSON view Gets the asset s information in JSON Will be very useful later on

12 YUI + DOM Chocolate + Peanut Butter

13 Before HTML in the template Useful but not re-useful Let s make something New!

14 Before <div id="shoutbox"> <tmpl_if chat><ul> <tmpl_loop chat><li> <span class="timestamp"> ^D("%z %Z",<tmpl_var timestamp>); </span> - <span class="from"><tmpl_var from></span>: <tmpl_var bodytext> </li></tmpl_loop> </ul></tmpl_if> <tmpl_var form_start> From: <tmpl_var form_from><br/> Text: <tmpl_var form_bodytext> <tmpl_var form_submit> <tmpl_var form_end> </div>

15 Before <div id="shoutbox"> <tmpl_if chat><ul> <tmpl_loop chat><li> <span class="timestamp"> ^D("%z %Z",<tmpl_var timestamp>); </span> - <span class="from"><tmpl_var from></span>: <tmpl_var bodytext> </li></tmpl_loop> </ul></tmpl_if> <tmpl_var form_start> From: <tmpl_var form_from><br/> Text: <tmpl_var form_bodytext> <tmpl_var form_submit> <tmpl_var form_end> </div>

16 Before <div id="shoutbox"> <tmpl_if chat><ul> <tmpl_loop chat><li> <span class="timestamp"> ^D("%z %Z",<tmpl_var timestamp>); </span> - <span class="from"><tmpl_var from></span>: <tmpl_var bodytext> </li></tmpl_loop> </ul></tmpl_if> <tmpl_var form_start> From: <tmpl_var form_from><br/> Text: <tmpl_var form_bodytext> <tmpl_var form_submit> <tmpl_var form_end> </div>

17 Before <div id="shoutbox"> <tmpl_if chat><ul> <tmpl_loop chat><li> <span class="timestamp"> ^D("%z %Z",<tmpl_var timestamp>); </span> - <span class="from"><tmpl_var from></span>: <tmpl_var bodytext> </li></tmpl_loop> </ul></tmpl_if> <tmpl_var form_start> From: <tmpl_var form_from><br/> Text: <tmpl_var form_bodytext> <tmpl_var form_submit> <tmpl_var form_end> </div>

18 Our Task Replace the loop generating the chat with a JavaScript one Reuse our new function Good practice when interacting with content Pretext to show off YUI DOM functions flimsy

19 Beginning Our App Some rules to live by Document, Document, Document <script type="text/javascript"> /******************************************************* * Shoutbox - User chat on your site ******************************************************/

20 Beginning Our App Some rules to live by Use Namespaces to keep away from overlap <script type="text/javascript"> /******************************************************* * Shoutbox - User chat on your site ******************************************************/ // Create a "namespace" to hold our functions var Shoutbox = {}; // Just a blank object!

21 Beginning Our App Some rules to live by Document, Document, Document * Shoutbox - User chat on your site ******************************************************/ // Create a "namespace" to hold our functions var Shoutbox = {}; // Just a blank object! /******************************************************* * Shoutbox.addChatRow ( timestamp, from, bodytext ) * Adds a row to the chat box. timestamp, from, and * bodytext are directly from the Shoutbox asset */

22 Beginning Our App Import YUI All of YUI requires yahoo.js <script type= text/javascript src= ^Extras(yui/build/yahoo/yahoo-min.js); ></script> <script type="text/javascript"> /******************************************************* * Shoutbox - User chat on your site ******************************************************/ // Create a "namespace" to hold our functions var Shoutbox = {}; // Just a blank object!

23 Beginning Our App Import YUI We want dom.js <script type= text/javascript src= ^Extras(yui/build/yahoo/yahoo-min.js); ></script> <script type= text/javascript src= ^Extras(yui/build/dom/dom-min.js); ></script> <script type="text/javascript"> /******************************************************* * Shoutbox - User chat on your site ******************************************************/ // Create a "namespace" to hold our functions var Shoutbox = {}; // Just a blank object!

24 Beginning Our App addchatrow Adds a row to the list <div id="shoutbox"> <tmpl_if chat><ul> <tmpl_loop chat><li> <span class="timestamp"> ^D("%z %Z",<tmpl_var timestamp>); </span> - <span class="from"><tmpl_var from></span>: <tmpl_var bodytext> </li></tmpl_loop> </ul></tmpl_if>

25 Beginning Our App addchatrow Adds a row to the list <div id="shoutbox"> <tmpl_if chat><ul> <tmpl_loop chat><li> <span class="timestamp"> ^D("%z %Z",<tmpl_var timestamp>); </span> - <span class="from"><tmpl_var from></span>: <tmpl_var bodytext> </li></tmpl_loop> </ul></tmpl_if>

26 Beginning Our App addchatrow /******************************************************* * Shoutbox.addChatRow ( timestamp, from, bodytext ) * Adds a row to the chat box. timestamp, from, and * bodytext are directly from the Shoutbox asset */ Shoutbox.addChatRow = function (timestamp, from, bodytext) { var sb = document.getelementbyid("shoutbox"); var ul = sb.getelementsbytagname("ul")[0]; // Nicely format our date timestamp = new Date(timestamp).toLocaleString(); // Create new DOM nodes for our chat

27 Beginning Our App addchatrow /******************************************************* * Shoutbox.addChatRow ( timestamp, from, bodytext ) * Adds a row to the chat box. timestamp, from, and * bodytext are directly from the Shoutbox asset */ Shoutbox.addChatRow = function (timestamp, from, bodytext) { var sb = document.getelementbyid("shoutbox"); var ul = sb.getelementsbytagname("ul")[0]; // Nicely format our date timestamp = new Date(timestamp).toLocaleString(); // Create new DOM nodes for our chat

28 Beginning Our App addchatrow /******************************************************* * Shoutbox.addChatRow ( timestamp, from, bodytext ) * Adds a row to the chat box. timestamp, from, and * bodytext are directly from the Shoutbox asset */ Shoutbox.addChatRow = function (timestamp, from, bodytext) { var sb = document.getelementbyid("shoutbox"); var ul = sb.getelementsbytagname("ul")[0]; // Nicely format our date var tsdate = new Date(timestamp).toLocaleString(); // Create new DOM nodes for our chat

29 Our First Yahoo addchatrow // Create new DOM nodes for our chat list var spantimestamp = document.createelement("span"); YAHOO.util.Dom.addClass(spanTimestamp, "timestamp"); spantimestamp.appendchild( document.createtextnode(timestamp) ); var spanfrom = document.createelement("span"); YAHOO.util.Dom.setStyle(spanFrom, "font-weight", "bold"); spanfrom.appendchild( document.createtextnode(from) ); var li = document.createelement("li"); li.appendchild( spantimestamp ); li.appendchild( document.createtextnode(" - ") );

30 Our First Yahoo addchatrow // Create new DOM nodes for our chat var spantimestamp = document.createelement("span"); YAHOO.util.Dom.addClass(spanTimestamp, "timestamp"); spantimestamp.appendchild( document.createtextnode(timestamp) ); YAHOO.util.Dom.addClass( id element, class ); Exists because of browser compatibility issues with setting element.classname or using element.setattribute( class, classname );

31 Our First Yahoo addchatrow // Create new DOM nodes for our chat list var spantimestamp = document.createelement("span"); YAHOO.util.Dom.addClass(spanTimestamp, "timestamp"); spantimestamp.appendchild( document.createtextnode(timestamp) ); var spanfrom = document.createelement("span"); YAHOO.util.Dom.setStyle(spanFrom, "font-weight", "bold"); spanfrom.appendchild( document.createtextnode(from) ); var li = document.createelement("li"); li.appendchild( spantimestamp ); li.appendchild( document.createtextnode(" - ") );

32 Our First Yahoo addchatrow // Create new DOM nodes for our chat list var spantimestamp = document.createelement("span"); YAHOO.util.Dom.addClass(spanTimestamp, "timestamp"); spantimestamp.appendchild( document.createtextnode(timestamp) ); var spanfrom = document.createelement("span"); YAHOO.util.Dom.setStyle(spanFrom, "font-weight", "bold"); spanfrom.appendchild( document.createtextnode(from) ); var li = document.createelement("li"); li.appendchild( spantimestamp ); li.appendchild( document.createtextnode(" - ") );

33 Our First Yahoo addchatrow var spanfrom = document.createelement("span"); YAHOO.util.Dom.setStyle(spanFrom, "font-weight", "bold"); spanfrom.appendchild( document.createtextnode(from) ); var li = document.createelement("li"); li.appendchild( spantimestamp ); YAHOO.util.Dom.setStyle( id element, property, value ); Exists because of browser compatibility issues with setting element.style or element.setattribute()

34 Our First Yahoo addchatrow var spanfrom = document.createelement("span"); YAHOO.util.Dom.setStyle(spanFrom, "font-weight", "bold"); spanfrom.appendchild( document.createtextnode(from) ); var li = document.createelement("li"); li.appendchild( spantimestamp ); li.appendchild( document.createtextnode(" - ") ); li.appendchild( spanfrom ); li.appendchild( document.createtextnode(": ") ); li.appendchild( document.createtextnode(bodytext) ); ul.appendchild(li); };

35 Our First Yahoo addchatrow var spanfrom = document.createelement("span"); YAHOO.util.Dom.setStyle(spanFrom, "font-weight", "bold"); spanfrom.appendchild( document.createtextnode(from) ); var li = document.createelement("li"); li.appendchild( spantimestamp ); li.appendchild( document.createtextnode(" - ") ); li.appendchild( spanfrom ); li.appendchild( document.createtextnode(": ") ); li.appendchild( document.createtextnode(bodytext) ); ul.appendchild(li); };

36 Our First Yahoo Replace our HTML Test our code One Way to Do It means One Code to Edit <tmpl_if chat><ul> <tmpl_loop chat><li> <span class="timestamp"> ^D("%z %Z",<tmpl_var timestamp>); </span> - <span class="from"><tmpl_var from></span>: <tmpl_var bodytext> </li></tmpl_loop> </ul></tmpl_if>

37 Our First Yahoo Replace our HTML Test our code One Way to Do It means One Code to Edit <tmpl_if chat><ul></ul> <script type= text/javascript > <tmpl_loop chat> Shoutbox.addChatRow( <tmpl_var timestamp>, <tmpl_var from escape= JS >, <tmpl_var bodytext escape= JS > ); </tmpl_loop> </script></tmpl_if>

38 DOM and DOMer Get the size of the viewport Different browsers, different ways YAHOO.util.Dom.getViewportWidth() YAHOO.util.Dom.getViewportHeight() Get and Set an elements position Difficult when other styles get in the way getx(el), gety(el), getxy(el) setx(el), sety(el), setxy(el)

39 The Result Looks the same But that s what we wanted Let s do something Interesting!

40 Events Johnny 5 need input

41 Show and Hide Add a title bar Click to toggle

42 Show and Hide Add a title bar Click to toggle <div id="shoutbox"> <a href="#" class="title">shoutbox</a> <tmpl_if chat><ul></ul> <script type= text/javascript > <tmpl_loop chat> Shoutbox.addChatRow( <tmpl_var timestamp>, <tmpl_var from escape= JS >, Where s the onclick=?

43 YUI Event Add and remove event listeners YAHOO.util.Event.addListener( id element, event, callbackfunction ); click, mouseover, mouseout submit, load

44 YUI Event Custom Events YAHOO.util.Event.onContentReady( id element, callbackfunction ); Calls the callbackfunction when the specified element AND its next sibling is available in the DOM Element is safe to modify in all browsers

45 Add an Event Setting up Import YUI Event <script type= text/javascript src= ^Extras(yui/build/yahoo/yahoo-min.js); ></script> <script type= text/javascript src= ^Extras(yui/build/dom/dom-min.js); ></script> <script type= text/javascript src= ^Extras(yui/build/event/event-min.js); ></script> <script type="text/javascript"> /******************************************************* * Shoutbox - User chat on your site ******************************************************/

46 Add an Event Setting up Save state * Shoutbox - User chat on your site ******************************************************/ // Create a "namespace" to hold our functions var Shoutbox = {}; // Just a blank object! Shoutbox.opened = 1; // Keep track if the shoutbox is open /****************************************************** * Shoutbox.addChatRow ( timestamp, from, bodytext ) * Adds a row to the chat box. timestamp, from, and * bodytext are directly from the Shoutbox asset */

47 Add an Event Create event handler to toggle that state Document, document, document /****************************************************** * Shoutbox.eventToggleView ( event ) * Event handler to toggle the shoutbox open or closed. */ Shoutbox.eventToggleView = function (event) { if (Shoutbox.opened) { YAHOO.util.Dom.setStyle('shoutbox','height','30px'); // height + padding of title Shoutbox.opened = 0; } else { YAHOO.util.Dom.setStyle('shoutbox','height','260px'); Shoutbox.opened = 1;

48 Add an Event Create event handler to toggle that state Event handlers have one required argument /****************************************************** * Shoutbox.eventToggleView ( event ) * Event handler to toggle the shoutbox open or closed. */ Shoutbox.eventToggleView = function (event) { if (Shoutbox.opened) { YAHOO.util.Dom.setStyle('shoutbox','height','30px'); // height + padding of title Shoutbox.opened = 0; } else { YAHOO.util.Dom.setStyle('shoutbox','height','260px'); Shoutbox.opened = 1;

49 Add an Event Create event handler to toggle that state If it s opened, close it /****************************************************** * Shoutbox.eventToggleView ( event ) * Event handler to toggle the shoutbox open or closed. */ Shoutbox.eventToggleView = function (event) { if (Shoutbox.opened) { YAHOO.util.Dom.setStyle('shoutbox','height','30px'); // height + padding of title Shoutbox.opened = 0; } else { YAHOO.util.Dom.setStyle('shoutbox','height','260px'); Shoutbox.opened = 1;

50 Add an Event Create event handler to toggle that state If it s closed, open it YAHOO.util.Dom.setStyle('shoutbox','height','30px'); // height + padding of title Shoutbox.opened = 0; } else { YAHOO.util.Dom.setStyle('shoutbox','height','260px'); Shoutbox.opened = 1; } YAHOO.util.Event.preventDefault(event); };

51 Add an Event Create event handler to toggle that state Stop the default action (href= # ) YAHOO.util.Dom.setStyle('shoutbox','height','30px'); // height + padding of title Shoutbox.opened = 0; } else { YAHOO.util.Dom.setStyle('shoutbox','height','260px'); Shoutbox.opened = 1; } YAHOO.util.Event.preventDefault(event); };

52 Add an Event Add a listener to call the toggle method Must be added after the entire shoutbox is loaded oncontentready() Create an event handler that will add the listener when the oncontentready event happens

53 Add an Event Add a listener to call the toggle method Create an initialization method /****************************************************** * Shoutbox.init ( ) * Initialize the shoutbox */ Shoutbox.init = function () { var shoutbox = document.getelementbyid('shoutbox'); // Add an onclick handler to the first title var title = YAHOO.util.Dom.getElementsByClassName ('title',undefined, shoutbox)[0]; YAHOO.util.Event.addListener( title, 'click', Shoutbox.eventToggleView

54 Add an Event Add a listener to call the toggle method Create an initialization method // Add an onclick handler to the first title var title = YAHOO.util.Dom.getElementsByClassName ('title',undefined, shoutbox)[0]; YAHOO.util.Event.addListener( title, 'click', Shoutbox.eventToggleView ); };

55 Add an Event Add a listener to call the toggle method Call the initializer when ready YAHOO.util.Event.addListener( title, 'click', Shoutbox.eventToggleView ); }; // Run the initializer when our shoutbox is safe to modify YAHOO.util.Event.onContentReady( 'shoutbox', Shoutbox.init );

56 Add an Event Additional benefits of oncontentready handlers Progressive Enhancement

57 Add an Event Additional benefits of oncontentready handlers Configurable state * Shoutbox - User chat on your site ******************************************************/ // Create a "namespace" to hold our functions var Shoutbox = {}; // Just a blank object! Shoutbox.opened = 1; // Keep track if the shoutbox is open /****************************************************** * Shoutbox.addChatRow ( timestamp, from, bodytext ) * Adds a row to the chat box. timestamp, from, and * bodytext are directly from the Shoutbox asset */

58 Add an Event Additional benefits of oncontentready handlers Change initial state based on configuration /****************************************************** * Shoutbox.init ( ) * Initialize the shoutbox */ Shoutbox.init = function () { var shoutbox = document.getelementbyid('shoutbox'); // Set the initial state if (Shoutbox.opened) { YAHOO.util.Dom.setStyle(shoutbox,'height','260px'); } else { YAHOO.util.Dom.setStyle(shoutbox,'height','30px');

59 Add an Event Additional benefits of oncontentready handlers Change initial state based on configuration // Set the initial state if (Shoutbox.opened) { YAHOO.util.Dom.setStyle(shoutbox,'height','260px'); } else { YAHOO.util.Dom.setStyle(shoutbox,'height','30px'); // height + padding of title } // Add an onclick handler to the first title var title = YAHOO.util.Dom.getElementsByClassName ('title',undefined, shoutbox)[0];

60 More Event YAHOO.util.Event.onDOMReady() Like oncontentready, but for when the entire DOM has been parsed. Happens after window load. Better than onload because of browser bugs

61 More Event Automatic addlistener deferral When using an ID, waits until the element is ready (like oncontentready) Browser quirk handling No need to check window.event The event s affected element is always correct

62 Results When the title is clicked, the shoutbox opens or closes Shoutbox.opened in the source now sets the default state. Oh yes. It can have more awesome

63 Animation New powers for making Awesome

64 Adding Animation Easier than you might think

65 Adding Animation Easier than you might think We already have the setup Shoutbox.eventToggleView = function (event) { if (Shoutbox.opened) { YAHOO.util.Dom.setStyle('shoutbox','height','30px'); // height + padding of title Shoutbox.opened = 0; } else { YAHOO.util.Dom.setStyle('shoutbox','height','260px'); Shoutbox.opened = 1; } YAHOO.util.Event.preventDefault(event); };

66 Adding Animation Easier than you might think Load the Animation component src= ^Extras(yui/build/yahoo/yahoo-min.js); ></script> <script type= text/javascript src= ^Extras(yui/build/dom/dom-min.js); ></script> <script type= text/javascript src= ^Extras(yui/build/event/event-min.js); ></script> <script type= text/javascript src= ^Extras(yui/build/animation/animation-min.js); > </script> <script type="text/javascript"> /******************************************************* * Shoutbox - User chat on your site

67 Adding Animation Easier than you might think Alter the eventtoggleview to use Animation Shoutbox.eventToggleView = function (event) { Shoutbox.animation = new YAHOO.util.Anim('shoutbox'); Shoutbox.animation.duration = 1; if (Shoutbox.opened) { Shoutbox.animation.attributes.height = { to: 30 }; Shoutbox.animation.method = YAHOO.util.Easing.bounceOut; Shoutbox.opened = 0; } else { Shoutbox.animation.attributes.height = { to: 260 }; Shoutbox.animation.method =

68 Adding Animation Easier than you might think Alter the eventtoggleview to use Animation YAHOO.util.Easing.bounceOut; Shoutbox.opened = 0; } else { Shoutbox.animation.attributes.height = { to: 260 }; Shoutbox.animation.method = YAHOO.util.Easing.elasticOut; Shoutbox.opened = 1; } Shoutbox.animation.animate(); YAHOO.util.Event.preventDefault(event); };

69 Other Methods YAHOO.util.Easing.bounceOut easenone Steady velocity easein / easeout Smooth velocity change backin / backout Pulling a window shade bouncein / Out Bounce Bounce Bounce elasticin / Out Pull and snap easeboth Both easein and easeout

70 More Animation Make your own Easing methods Move an element along a path YAHOO.util.Motion Animate Colors YAHOO.util.ColorAnim Scroll elements YAHOO.util.Scroll

71 Result That s darn cool, but it isn t very useful.

72 Connection XmlHttpRequest (AJAX) The best thing to happen to WWW since Netscape

73 What is AJAX? More than a buzzword

74 What is AJAX? More than a buzzword Dynamic interaction between server and user Without expensive page loads In the background (no leaving the screen) Build functional, responsive user interfaces What JavaScript is all about

75 Adding some AJAX Get Shoutbox content through AJAX Import the Connection component src= ^Extras(yui/build/yahoo/yahoo-min.js); ></script> <script type= text/javascript src= ^Extras(yui/build/dom/dom-min.js); ></script> <script type= text/javascript src= ^Extras(yui/build/event/event-min.js); ></script> <script type= text/javascript src= ^Extras(yui/build/animation/animation-min.js); > </script> <script type= text/javascript src= ^Extras(yui/build/connection/connection-min.js); > </script> <script type="text/javascript">

76 Adding some AJAX Get Shoutbox content through AJAX Create a method to request an update Use our?func=json asset page JSON is easy to manipulate using JavaScript who knew?

77 Adding some AJAX Get Shoutbox content through AJAX Create a method to request an update /****************************************************** * Shoutbox.requestUpdate ( ) * Submit the async request to update our shoutbox */ Shoutbox.requestUpdate = function () { var callback = { success: function (o) { // Remove all old chat and replace with new removeallchildren("shoutbox"); responseobj = eval("(" + o.responsetext + ")"); for (var i in responseobj.chat) { var row = responseobj.chat[i]; Shoutbox.addChatRow(row.timestamp, row.from,

78 Adding some AJAX Get Shoutbox content through AJAX Create a method to request an update var callback = { success: function (o) { // Remove all old chat and replace with new removeallchildren("shoutbox"); responseobj = eval("(" + o.responsetext + ")"); for (var i in responseobj.chat) { var row = responseobj.chat[i]; Shoutbox.addChatRow(row.timestamp, row.from, row.bodytext); } }, failure: function (o) { alert("update failed! Please try again.");

79 Adding some AJAX Get Shoutbox content through AJAX Create a method to request an update for (var i in responseobj.chat) { var row = responseobj.chat[i]; Shoutbox.addChatRow(row.timestamp, row.from, row.bodytext); } }, failure: function (o) { alert("update failed! Please try again."); } } YAHOO.util.Connect.asyncRequest('GET', Shoutbox.url + '? func=json', callback);

80 Adding some AJAX Get Shoutbox content through AJAX Create a method to request an update row.bodytext); } }, failure: function (o) { alert("update failed! Please try again."); } } YAHOO.util.Connect.asyncRequest('GET', Shoutbox.url + '? func=json', callback); }; /****************************************************

81 Adding some AJAX Get Shoutbox content through AJAX Where did we get Shoutbox.url? WebGUI doesn t process Head Block Set the right URL in the Template <script type="text/javascript"> // Can't get the template var inside Head Block Shoutbox.url = '<tmpl_var url escape="js">'; </script> <div id="shoutbox">

82 Adding some AJAX Get Shoutbox content through AJAX Where did we get removeallchildren()? A function useful when replacing elements /****************************************************** * removeallchildren(nodeid) * Utility to remove all children from an element */ function removeallchildren(nodeid) { var node = document.getelementbyid(nodeid); if (node && node.childnodes && node.removechild) { while (node.haschildnodes()) node.removechild(node.firstchild); } }

83 Adding some AJAX Get Shoutbox content through AJAX Call the method during initialization /****************************************************** * Shoutbox.init ( ) * Initialize the shoutbox */ Shoutbox.init = function () { var shoutbox = document.getelementbyid('shoutbox'); // Get the content for our shoutbox Shoutbox.requestUpdate(); // Add an onclick handler to the first title var title = YAHOO.util.Dom.getElementsByClassName ('title',undefined, shoutbox)[0];

84 Adding some AJAX Get Shoutbox content through AJAX Clear out our old method <tmpl_if chat><ul></ul> <script type= text/javascript > <tmpl_loop chat> Shoutbox.addChatRow( <tmpl_var timestamp>, <tmpl_var from escape= JS >, <tmpl_var bodytext escape= JS > ); </tmpl_loop> </script></tmpl_if>

85 Adding some AJAX Get Shoutbox content through AJAX Clear out our old method <div id="shoutbox"> <a href="#" class="title"> Shoutbox </a> <ul><li></li></ul> <tmpl_var form_start> From: <tmpl_var form_from><br/> Empty container remains as placeholder

86 Result Like earlier, the functionality is the same... Foundation laid for enhanced functionality

87 Background AJAX Periodically request an update from the server That s what asynchronous is all about No expensive page loads Build the layout once, show multiple types of content User interaction to pull only the content they want

88 Periodic Update Add a method to maintain period /****************************************************** * Shoutbox.doAutoUpdate ( ) * Start the timer to auto update the shoutbox. Request an * update if the shoutbox is opened. */ Shoutbox.doAutoUpdate = function () { // Start another timeout to keep the chain going Shoutbox.updateTimeout = settimeout(shoutbox.doautoupdate, 4000); if (!Shoutbox.opened) { return; }

89 Periodic Update Add a method to maintain period First call starts, subsequent calls maintain Shoutbox.doAutoUpdate = function () { // Start another timeout to keep the chain going Shoutbox.updateTimeout = settimeout(shoutbox.doautoupdate, 4000); if (!Shoutbox.opened) { return; } else { Shoutbox.requestUpdate(); } };

90 Periodic Update Add a method to maintain period Use our saved state Shoutbox.doAutoUpdate = function () { // Start another timeout to keep the chain going Shoutbox.updateTimeout = settimeout(shoutbox.doautoupdate, 4000); if (!Shoutbox.opened) { return; } else { Shoutbox.requestUpdate(); } };

91 Periodic Update Add a method to maintain period Kick off the festivities return; } else { Shoutbox.requestUpdate(); } }; // Start the timer when the Shoutbox is ready YAHOO.util.Event.onContentReady( 'shoutbox', Shoutbox.doAutoUpdate );

92 Periodic Update Add a method to maintain period Clean up after thyself /****************************************************** * Shoutbox.init ( ) * Initialize the shoutbox */ Shoutbox.init = function () { var shoutbox = document.getelementbyid('shoutbox'); // Get the content for our shoutbox Shoutbox.requestUpdate(); // Add an onclick handler to the first title var title = YAHOO.util.Dom.getElementsByClassName ('title',undefined, shoutbox)[0];

93 Periodic Update Add a method to maintain period Clean up after thyself /****************************************************** * Shoutbox.init ( ) * Initialize the shoutbox */ Shoutbox.init = function () { var shoutbox = document.getelementbyid('shoutbox'); // Add an onclick handler to the first title var title = YAHOO.util.Dom.getElementsByClassName ('title',undefined, shoutbox)[0]; YAHOO.util.Event.addListener(title, 'click', Shoutbox.eventToggleView);

94 Result As new rows are added to the Shoutbox, we get updated without having to do anything Keep track of the conversation without leaving the page

95 Asynchronous Forms As much awesome as one should ingest in a single sitting Process a form without leaving the page YUI makes it easy!

96 Asynchronous Forms Make an event handler that sends an AJAX request /****************************************************** * Shoutbox.handleSubmit ( event ) * Handle the shoutbox form submit. Submit the form and * refresh the data. */ Shoutbox.handleSubmit = function (e) { // Stop the browser from handling the submit YAHOO.util.Event.preventDefault(e); var shoutbox = document.getelementbyid('shoutbox'); var form = shoutbox.getelementsbytagname("form")[0]; // Get the form and send the data off var shoutbox = document.getelementbyid('shoutbox'); var form = shoutbox.getelementsbytagname("form")[0];

97 Asynchronous Forms Make an event handler that sends an AJAX request Shoutbox.handleSubmit = function (e) { // Stop the browser from handling the submit YAHOO.util.Event.preventDefault(e); // Get the form and send the data off var shoutbox = document.getelementbyid('shoutbox'); var form = shoutbox.getelementsbytagname("form")[0]; YAHOO.util.Connect.setForm(form); var callback = { success: function (o) { // Clear the form form.bodytext.value = ""; if (form.from && form.from.value) { form.from.value = "";

98 Asynchronous Forms Make an event handler that sends an AJAX request Shoutbox.handleSubmit = function (e) { // Stop the browser from handling the submit YAHOO.util.Event.preventDefault(e); // Get the form and send the data off var shoutbox = document.getelementbyid('shoutbox'); var form = shoutbox.getelementsbytagname("form")[0]; YAHOO.util.Connect.setForm(form); var callback = { success: function (o) { // Clear the form form.bodytext.value = ""; if (form.from && form.from.value) { form.from.value = "";

99 Asynchronous Forms Make an event handler that sends an AJAX request var callback = { success: function (o) { // Clear the form form.bodytext.value = ""; if (form.from && form.from.value) { form.from.value = ""; } Shoutbox.requestUpdate(); }, failure: function (o) { alert("failed to submit! Try again!"); } };

100 Asynchronous Forms Make an event handler that sends an AJAX request failure: function (o) { alert("failed to submit! Try again!"); } }; YAHOO.util.Connect.asyncRequest( "POST", Shoutbox.url, callback ); };

101 Asynchronous Forms Attach the event handler to the form /****************************************************** * Shoutbox.init ( ) * Initialize the shoutbox */ Shoutbox.init = function () { var shoutbox = document.getelementbyid('shoutbox'); // Add an onsubmit handler to the form var form = shoutbox.getelementsbytagname("form")[0]; YAHOO.util.Event.addListener( form, 'submit', Shoutbox.handleSubmit ); // Set the initial state All done without touching our HTML!

102 More Connection Set a timeout The timeout property of the callback object Asynchronous file upload Will Just Work(tm) More custom events start, complete, success, failure, more...

103 More Connection Transaction state YAHOO.util.Connect.asyncRequest() returns an object Store it and check its status Stop running requests until the first is done Abort a running request

104 Result Whatever page our Shoutbox may be on we will be able to chat without leaving our page AssetProxy, Page Layout, Folder

105 Wrapping Up You ve Come a Long Way, Baby

106 Summary YUI DOM Component Handles DOM incompatibilities between browsers YUI Event Component Handles Event incompatibilities between browsers More efficient / intuitive interface to events

107 Summary YUI Animation Component Flashy special effects Improve the user experience YUI Connection Component AJAX (XmlHttpRequest) A magical world of usability

108 After YUI Documentation Current version used by your WebGUI Latest version released by Yahoo

109 More Resources Resources on browser compatibilities and capabilities Firebug - JavaScript, CSS, HTML debugging tool

110 Questions?

E ECMAScript, 21 elements collection, HTML, 30 31, 31. Index 161

E ECMAScript, 21 elements collection, HTML, 30 31, 31. Index 161 A element, 108 accessing objects within HTML, using JavaScript, 27 28, 28 activatediv()/deactivatediv(), 114 115, 115 ActiveXObject, AJAX and, 132, 140 adding information to page dynamically, 30, 30,

More information

User Interaction: jquery

User Interaction: jquery User Interaction: jquery Assoc. Professor Donald J. Patterson INF 133 Fall 2012 1 jquery A JavaScript Library Cross-browser Free (beer & speech) It supports manipulating HTML elements (DOM) animations

More information

Course Details. Skills Gained. Who Can Benefit. Prerequisites. View Online URL:

Course Details. Skills Gained. Who Can Benefit. Prerequisites. View Online URL: Specialized - Mastering jquery Code: Lengt h: URL: TT4665 4 days View Online Mastering jquery provides an introduction to and experience working with the JavaScript programming language in the environment

More information

Web applications Developing Android/Iphone Applications using WebGUI

Web applications Developing Android/Iphone Applications using WebGUI Web applications Developing Android/Iphone Applications using WebGUI Joeri de Bruin Oqapi Software joeri@oqapi.nl 1 Overview Web applications Create WebApp with WebGUI Turn WebApp into native mobile app

More information

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc.

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc. Tooling for Ajax-Based Development Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc. 1 Agenda In The Beginning Frameworks Tooling Architectural Approaches Resources 2 In The Beginning 3

More information

UI Course HTML: (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) Introduction. The World Wide Web (WWW) and history of HTML

UI Course HTML: (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) Introduction. The World Wide Web (WWW) and history of HTML UI Course (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) HTML: Introduction The World Wide Web (WWW) and history of HTML Hypertext and Hypertext Markup Language Why HTML Prerequisites Objective

More information

AJAX Programming Chris Seddon

AJAX Programming Chris Seddon AJAX Programming Chris Seddon seddon-software@keme.co.uk 2000-12 CRS Enterprises Ltd 1 2000-12 CRS Enterprises Ltd 2 What is Ajax? "Asynchronous JavaScript and XML" Originally described in 2005 by Jesse

More information

HTML5. HTML5 Introduction. Form Input Types. Semantic Elements. Form Attributes. Form Elements. Month Number Range Search Tel Url Time Week

HTML5. HTML5 Introduction. Form Input Types. Semantic Elements. Form Attributes. Form Elements. Month Number Range Search Tel Url Time Week WEB DESIGNING HTML HTML - Introduction HTML - Elements HTML - Tags HTML - Text HTML - Formatting HTML - Pre HTML - Attributes HTML - Font HTML - Text Links HTML - Comments HTML - Lists HTML - Images HTML

More information

v0.9.3 Tim Neil Director, Application Platform & Tools Product

v0.9.3 Tim Neil Director, Application Platform & Tools Product v0.9.3 Tim Neil Director, Application Platform & Tools Product Management @brcewane Framework Goals Incubation project to experiment with HTML5 UI Contribute learning's to jquerymobile, Sencha, Dojo Provides

More information

Designing RIA Accessibility: A Yahoo UI (YUI) Menu Case Study

Designing RIA Accessibility: A Yahoo UI (YUI) Menu Case Study Designing RIA Accessibility: A Yahoo UI (YUI) Menu Case Study Doug Geoffray & Todd Kloots 1 Capacity Building Institute Seattle, Washington 2006.11.30 What s Happening? 2 3 Web 1.0 vs. Web 2.0 Rich Internet

More information

Index LICENSED PRODUCT NOT FOR RESALE

Index LICENSED PRODUCT NOT FOR RESALE Index LICENSED PRODUCT NOT FOR RESALE A Absolute positioning, 100 102 with multi-columns, 101 Accelerometer, 263 Access data, 225 227 Adding elements, 209 211 to display, 210 Animated boxes creation using

More information

How to Build a Site Style. WebGUI LIVE!

How to Build a Site Style. WebGUI LIVE! How to Build a Site Style WebGUI LIVE! Where do we start? Create a design Turn it into HTML & graphics Introduce WebGUI Components Putting it all together A Closer Look Creating a Design The Big Question...

More information

Web Development & Design Foundations with HTML5

Web Development & Design Foundations with HTML5 1 Web Development & Design Foundations with HTML5 CHAPTER 14 A BRIEF LOOK AT JAVASCRIPT Copyright Terry Felke-Morris 2 Learning Outcomes In this chapter, you will learn how to: Describe common uses of

More information

Module 5 JavaScript, AJAX, and jquery. Module 5. Module 5 Contains an Individual and Group component

Module 5 JavaScript, AJAX, and jquery. Module 5. Module 5 Contains an Individual and Group component Module 5 JavaScript, AJAX, and jquery Module 5 Contains an Individual and Group component Both are due on Wednesday October 24 th Start early on this module One of the most time consuming modules in the

More information

8/19/2018. Web Development & Design Foundations with HTML5. Learning Objectives (1 of 2) Learning Objectives (2 of 2) What is JavaScript?

8/19/2018. Web Development & Design Foundations with HTML5. Learning Objectives (1 of 2) Learning Objectives (2 of 2) What is JavaScript? Web Development & Design Foundations with HTML5 Ninth Edition Chapter 14 A Brief Look at JavaScript and jquery Slides in this presentation contain hyperlinks. JAWS users should be able to get a list of

More information

jquery Cookbook jquery Community Experts O'REILLY8 Tokyo Taipei Sebastopol Beijing Cambridge Farnham Koln

jquery Cookbook jquery Community Experts O'REILLY8 Tokyo Taipei Sebastopol Beijing Cambridge Farnham Koln jquery Cookbook jquery Community Experts O'REILLY8 Beijing Cambridge Farnham Koln Sebastopol Taipei Tokyo Foreword xi Contributors xiii Preface xvii 1. jquery Basics 1 1.1 Including the jquery Library

More information

Part of this connection identifies how the response can / should be provided to the client code via the use of a callback routine.

Part of this connection identifies how the response can / should be provided to the client code via the use of a callback routine. What is AJAX? In one sense, AJAX is simply an acronym for Asynchronous JavaScript And XML In another, it is a protocol for sending requests from a client (web page) to a server, and how the information

More information

Design Document V2 ThingLink Startup

Design Document V2 ThingLink Startup Design Document V2 ThingLink Startup Yon Corp Andy Chen Ashton Yon Eric Ouyang Giovanni Tenorio Table of Contents 1. Technology Background.. 2 2. Design Goal...3 3. Architectural Choices and Corresponding

More information

MAX 2006 Beyond Boundaries

MAX 2006 Beyond Boundaries Building a Spry Page MAX 2006 Beyond Boundaries Donald Booth Dreamweaver QE/Spry Team Adobe Systems, Inc. 1. Attach CSS/JS 1. Browse to the Assets folder and attach max.css. 2. Attach the 2 js files.

More information

Client Side JavaScript and AJAX

Client Side JavaScript and AJAX Client Side JavaScript and AJAX Client side javascript is JavaScript that runs in the browsers of people using your site. So far all the JavaScript code we've written runs on our node.js server. This is

More information

Siteforce Pilot: Best Practices

Siteforce Pilot: Best Practices Siteforce Pilot: Best Practices Getting Started with Siteforce Setup your users as Publishers and Contributors. Siteforce has two distinct types of users First, is your Web Publishers. These are the front

More information

Virto SharePoint Forms Designer for Office 365. Installation and User Guide

Virto SharePoint Forms Designer for Office 365. Installation and User Guide Virto SharePoint Forms Designer for Office 365 Installation and User Guide 2 Table of Contents KEY FEATURES... 3 SYSTEM REQUIREMENTS... 3 INSTALLING VIRTO SHAREPOINT FORMS FOR OFFICE 365...3 LICENSE ACTIVATION...4

More information

Module 5 JavaScript, AJAX, and jquery. Module 5. Module 5 Contains 2 components

Module 5 JavaScript, AJAX, and jquery. Module 5. Module 5 Contains 2 components Module 5 JavaScript, AJAX, and jquery Module 5 Contains 2 components Both the Individual and Group portion are due on Monday October 30 th Start early on this module One of the most time consuming modules

More information

PHP & My SQL Duration-4-6 Months

PHP & My SQL Duration-4-6 Months PHP & My SQL Duration-4-6 Months Overview of the PHP & My SQL Introduction of different Web Technology Working with the web Client / Server Programs Server Communication Sessions Cookies Typed Languages

More information

Full Stack Web Developer

Full Stack Web Developer Full Stack Web Developer Course Contents: Introduction to Web Development HTML5 and CSS3 Introduction to HTML5 Why HTML5 Benefits Of HTML5 over HTML HTML 5 for Making Dynamic Page HTML5 for making Graphics

More information

JavaScript Programming

JavaScript Programming JavaScript Programming Course ISI-1337B - 5 Days - Instructor-led, Hands on Introduction Today, JavaScript is used in almost 90% of all websites, including the most heavilytrafficked sites like Google,

More information

Overview of the Adobe Dreamweaver CS5 workspace

Overview of the Adobe Dreamweaver CS5 workspace Adobe Dreamweaver CS5 Activity 2.1 guide Overview of the Adobe Dreamweaver CS5 workspace You can access Adobe Dreamweaver CS5 tools, commands, and features by using menus or by selecting options from one

More information

COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3

COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3 COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3 MODULE 1: OVERVIEW OF HTML AND CSS This module provides an overview of HTML and CSS, and describes how to use Visual Studio 2012

More information

Full Stack Web Developer

Full Stack Web Developer Full Stack Web Developer S.NO Technologies 1 HTML5 &CSS3 2 JavaScript, Object Oriented JavaScript& jquery 3 PHP&MYSQL Objective: Understand the importance of the web as a medium of communication. Understand

More information

Sections and Articles

Sections and Articles Advanced PHP Framework Codeigniter Modules HTML Topics Introduction to HTML5 Laying out a Page with HTML5 Page Structure- New HTML5 Structural Tags- Page Simplification HTML5 - How We Got Here 1.The Problems

More information

Jquery Manually Set Checkbox Checked Or Not

Jquery Manually Set Checkbox Checked Or Not Jquery Manually Set Checkbox Checked Or Not Working Second Time jquery code to set checkbox element to checked not working. Apr 09 I forced a loop to show checked state after the second menu item in the

More information

PHP / MYSQL DURATION: 2 MONTHS

PHP / MYSQL DURATION: 2 MONTHS PHP / MYSQL HTML Introduction of Web Technology History of HTML HTML Editors HTML Doctypes HTML Heads and Basics HTML Comments HTML Formatting HTML Fonts, styles HTML links and images HTML Blocks and Layout

More information

Website Development Lecture 18: Working with JQuery ================================================================================== JQuery

Website Development Lecture 18: Working with JQuery ================================================================================== JQuery JQuery What You Will Learn in This Lecture: What jquery is? How to use jquery to enhance your pages, including adding rich? Visual effects and animations. JavaScript is the de facto language for client-side

More information

Photo from DOM

Photo from  DOM Photo from http://www.flickr.com/photos/emraya/2861149369/ DOM 2 DOM When a browser reads an HTML file, it must interpret the file and render it onscreen. This process is sophisticated. Fetch Parse Flow

More information

READSPEAKER ENTERPRISE HIGHLIGHTING 2.5

READSPEAKER ENTERPRISE HIGHLIGHTING 2.5 READSPEAKER ENTERPRISE HIGHLIGHTING 2.5 Advanced Skinning Guide Introduction The graphical user interface of ReadSpeaker Enterprise Highlighting is built with standard web technologies, Hypertext Markup

More information

Developing Ajax Web Apps with GWT. Session I

Developing Ajax Web Apps with GWT. Session I Developing Ajax Web Apps with GWT Session I Contents Introduction Traditional Web RIAs Emergence of Ajax Ajax ( GWT ) Google Web Toolkit Installing and Setting up GWT in Eclipse The Project Structure Running

More information

Create-A-Page Design Documentation

Create-A-Page Design Documentation Create-A-Page Design Documentation Group 9 C r e a t e - A - P a g e This document contains a description of all development tools utilized by Create-A-Page, as well as sequence diagrams, the entity-relationship

More information

jmaki Overview Sang Shin Java Technology Architect Sun Microsystems, Inc.

jmaki Overview Sang Shin Java Technology Architect Sun Microsystems, Inc. jmaki Overview Sang Shin Java Technology Architect Sun Microsystems, Inc. sang.shin@sun.com www.javapassion.com Agenda What is and Why jmaki? jmaki widgets Using jmaki widget - List widget What makes up

More information

Table Basics. The structure of an table

Table Basics. The structure of an table TABLE -FRAMESET Table Basics A table is a grid of rows and columns that intersect to form cells. Two different types of cells exist: Table cell that contains data, is created with the A cell that

More information

CISC 1600 Lecture 2.4 Introduction to JavaScript

CISC 1600 Lecture 2.4 Introduction to JavaScript CISC 1600 Lecture 2.4 Introduction to JavaScript Topics: Javascript overview The DOM Variables and objects Selection and Repetition Functions A simple animation What is JavaScript? JavaScript is not Java

More information

AJAX: Rich Internet Applications

AJAX: Rich Internet Applications AJAX: Rich Internet Applications Web Programming Uta Priss ZELL, Ostfalia University 2013 Web Programming AJAX Slide 1/27 Outline Rich Internet Applications AJAX AJAX example Conclusion More AJAX Search

More information

Index. Ray Nicholus 2016 R. Nicholus, Beyond jquery, DOI /

Index. Ray Nicholus 2016 R. Nicholus, Beyond jquery, DOI / Index A addclass() method, 2 addeventlistener, 154, 156 AJAX communication, 20 asynchronous operations, 110 expected and unexpected responses, 111 HTTP, 110 web sockets, 111 AJAX requests DELETE requests,

More information

ThingLink User Guide. Andy Chen Eric Ouyang Giovanni Tenorio Ashton Yon

ThingLink User Guide. Andy Chen Eric Ouyang Giovanni Tenorio Ashton Yon ThingLink User Guide Yon Corp Andy Chen Eric Ouyang Giovanni Tenorio Ashton Yon Index Preface.. 2 Overview... 3 Installation. 4 Functionality. 5 Troubleshooting... 6 FAQ... 7 Contact Information. 8 Appendix...

More information

Serverless Single Page Web Apps, Part Four. CSCI 5828: Foundations of Software Engineering Lecture 24 11/10/2016

Serverless Single Page Web Apps, Part Four. CSCI 5828: Foundations of Software Engineering Lecture 24 11/10/2016 Serverless Single Page Web Apps, Part Four CSCI 5828: Foundations of Software Engineering Lecture 24 11/10/2016 1 Goals Cover Chapter 4 of Serverless Single Page Web Apps by Ben Rady Present the issues

More information

20480C: Programming in HTML5 with JavaScript and CSS3. Course Code: 20480C; Duration: 5 days; Instructor-led. JavaScript code.

20480C: Programming in HTML5 with JavaScript and CSS3. Course Code: 20480C; Duration: 5 days; Instructor-led. JavaScript code. 20480C: Programming in HTML5 with JavaScript and CSS3 Course Code: 20480C; Duration: 5 days; Instructor-led WHAT YOU WILL LEARN This course provides an introduction to HTML5, CSS3, and JavaScript. This

More information

AJAX: From the Client-side with JavaScript, Back to the Server

AJAX: From the Client-side with JavaScript, Back to the Server AJAX: From the Client-side with JavaScript, Back to the Server Asynchronous server calls and related technologies CS 370 SE Practicum, Cengiz Günay (Some slides courtesy of Eugene Agichtein and the Internets)

More information

729G26 Interaction Programming. Lecture 4

729G26 Interaction Programming. Lecture 4 729G26 Interaction Programming Lecture 4 Lecture overview jquery - write less, do more Capturing events using jquery Manipulating the DOM, attributes and content with jquery Animation with jquery Describing

More information

AJAX Workshop. Karen A. Coombs University of Houston Libraries Jason A. Clark Montana State University Libraries

AJAX Workshop. Karen A. Coombs University of Houston Libraries Jason A. Clark Montana State University Libraries AJAX Workshop Karen A. Coombs University of Houston Libraries Jason A. Clark Montana State University Libraries Outline 1. What you re in for 2. What s AJAX? 3. Why AJAX? 4. Look at some AJAX examples

More information

Merging Ajax and Accessibility

Merging Ajax and Accessibility Merging Ajax and Accessibility Mark Meeker Architect, Orbitz Worldwide The Ajax Experience San Francisco - July 27, 2007 Merging Ajax and Accessibility - 1 Mark Meeker Architect, UI Engineering Orbitz

More information

Learn Web Development CodersTrust Polska course outline. Hello CodersTrust! Unit 1. HTML Structuring the Web Prerequisites Learning pathway.

Learn Web Development CodersTrust Polska course outline. Hello CodersTrust! Unit 1. HTML Structuring the Web Prerequisites Learning pathway. Learn Web Development CodersTrust Polska course outline Hello CodersTrust! Syllabus Communication Publishing your work Course timeframe Kick off Unit 1 Getting started with the Web Installing basic software

More information

Web Designing Course

Web Designing Course Web Designing Course Course Summary: HTML, CSS, JavaScript, jquery, Bootstrap, GIMP Tool Course Duration: Approx. 30 hrs. Pre-requisites: Familiarity with any of the coding languages like C/C++, Java etc.

More information

Virto SharePoint Forms Designer for Office 365. Installation and User Guide

Virto SharePoint Forms Designer for Office 365. Installation and User Guide Virto SharePoint Forms Designer for Office 365 Installation and User Guide 2 Table of Contents KEY FEATURES... 3 SYSTEM REQUIREMENTS... 3 INSTALLING VIRTO SHAREPOINT FORMS FOR OFFICE 365... 3 LICENSE ACTIVATION...

More information

jquery Element & Attribute Selectors, Events, HTML Manipulation, & CSS Manipulation

jquery Element & Attribute Selectors, Events, HTML Manipulation, & CSS Manipulation jquery Element & Attribute Selectors, Events, HTML Manipulation, & CSS Manipulation Element Selectors Use CSS selectors to select HTML elements Identify them just as you would in style sheet Examples:

More information

This course is designed for web developers that want to learn HTML5, CSS3, JavaScript and jquery.

This course is designed for web developers that want to learn HTML5, CSS3, JavaScript and jquery. HTML5/CSS3/JavaScript Programming Course Summary Description This class is designed for students that have experience with basic HTML concepts that wish to learn about HTML Version 5, Cascading Style Sheets

More information

How to set up a local root folder and site structure

How to set up a local root folder and site structure Activity 2.1 guide How to set up a local root folder and site structure The first thing to do when creating a new website with Adobe Dreamweaver CS3 is to define a site and identify a root folder where

More information

COPYRIGHTED MATERIAL. Contents. Chapter 1: Creating Structured Documents 1

COPYRIGHTED MATERIAL. Contents. Chapter 1: Creating Structured Documents 1 59313ftoc.qxd:WroxPro 3/22/08 2:31 PM Page xi Introduction xxiii Chapter 1: Creating Structured Documents 1 A Web of Structured Documents 1 Introducing XHTML 2 Core Elements and Attributes 9 The

More information

AJAX Programming Overview. Introduction. Overview

AJAX Programming Overview. Introduction. Overview AJAX Programming Overview Introduction Overview In the world of Web programming, AJAX stands for Asynchronous JavaScript and XML, which is a technique for developing more efficient interactive Web applications.

More information

WELCOME TO JQUERY PROGRAMMING LANGUAGE ONLINE TUTORIAL

WELCOME TO JQUERY PROGRAMMING LANGUAGE ONLINE TUTORIAL WELCOME TO JQUERY PROGRAMMING LANGUAGE ONLINE TUTORIAL 1 The above website template represents the HTML/CSS previous studio project we have been working on. Today s lesson will focus on JQUERY programming

More information

CSC Javascript

CSC Javascript CSC 4800 Javascript See book! Javascript Syntax How to embed javascript between from an external file In an event handler URL - bookmarklet

More information

JQUERYUI - SORTABLE. axis This option indicates an axis of movement "x" is horizontal, "y" is vertical. By default its value is false.

JQUERYUI - SORTABLE. axis This option indicates an axis of movement x is horizontal, y is vertical. By default its value is false. JQUERYUI - SORTABLE http://www.tutorialspoint.com/jqueryui/jqueryui_sortable.htm Copyright tutorialspoint.com jqueryui provides sortable method to reorder elements in list or grid using the mouse. This

More information

We will talk about Alt-Tab from the usability perspective. Think about: - Is it learnable? - Is it efficient? - What about errors and safety?

We will talk about Alt-Tab from the usability perspective. Think about: - Is it learnable? - Is it efficient? - What about errors and safety? 1 This lecture s candidate for the Hall of Fame & Shame is the Alt-Tab window switching interface in Microsoft Windows. This interface has been copied by a number of desktop systems, including KDE, Gnome,

More information

Using AJAX to Easily Integrate Rich Media Elements

Using AJAX to Easily Integrate Rich Media Elements 505 Using AJAX to Easily Integrate Rich Media Elements James Monroe Course Developer, WWW.eLearningGuild.com The Problem: How to string together several rich media elements (images, Flash movies, video,

More information

Unveiling Zend Studio 8.0

Unveiling Zend Studio 8.0 Unveiling Zend Studio 8.0 Roy Ganor Project Lead Zend Studio http://twitter.com/royganor Download! Native Installers! Zend Studio Releases 2006 2007 2007 2008 2008 2009 2009 2010 2010 Studio 6.0 Studio

More information

Oracle Application Express 5 New Features

Oracle Application Express 5 New Features Oracle Application Express 5 New Features 20th HrOUG conference October 16, 2015 Vladislav Uvarov Software Development Manager Database Server Technologies Division Copyright 2015, Oracle and/or its affiliates.

More information

CIS 408 Internet Computing Sunnie Chung

CIS 408 Internet Computing Sunnie Chung Project #2: CIS 408 Internet Computing Sunnie Chung Building a Personal Webpage in HTML and Java Script to Learn How to Communicate Your Web Browser as Client with a Form Element with a Web Server in URL

More information

Frontend guide. Everything you need to know about HTML, CSS, JavaScript and DOM. Dejan V Čančarević

Frontend guide. Everything you need to know about HTML, CSS, JavaScript and DOM. Dejan V Čančarević Frontend guide Everything you need to know about HTML, CSS, JavaScript and DOM Dejan V Čančarević Today frontend is treated as a separate part of Web development and therefore frontend developer jobs are

More information

Static Webpage Development

Static Webpage Development Dear Student, Based upon your enquiry we are pleased to send you the course curriculum for PHP Given below is the brief description for the course you are looking for: - Static Webpage Development Introduction

More information

Outline. Introduction to JavaScript Resources What is JavaScript? JavaScript in web pages

Outline. Introduction to JavaScript Resources What is JavaScript? JavaScript in web pages JavaScript CMPT 281 Outline Introduction to JavaScript Resources What is JavaScript? JavaScript in web pages Announcements Layout with tables Assignment 3 JavaScript Resources Resources Why JavaScript?

More information

Introduction to JavaScript p. 1 JavaScript Myths p. 2 Versions of JavaScript p. 2 Client-Side JavaScript p. 3 JavaScript in Other Contexts p.

Introduction to JavaScript p. 1 JavaScript Myths p. 2 Versions of JavaScript p. 2 Client-Side JavaScript p. 3 JavaScript in Other Contexts p. Preface p. xiii Introduction to JavaScript p. 1 JavaScript Myths p. 2 Versions of JavaScript p. 2 Client-Side JavaScript p. 3 JavaScript in Other Contexts p. 5 Client-Side JavaScript: Executable Content

More information

TIME SCHEDULE MODULE TOPICS PERIODS. HTML Document Object Model (DOM) and javascript Object Notation (JSON)

TIME SCHEDULE MODULE TOPICS PERIODS. HTML Document Object Model (DOM) and javascript Object Notation (JSON) COURSE TITLE : ADVANCED WEB DESIGN COURSE CODE : 5262 COURSE CATEGORY : A PERIODS/WEEK : 4 PERIODS/SEMESTER : 52 CREDITS : 4 TIME SCHEDULE MODULE TOPICS PERIODS 1 HTML Document Object Model (DOM) and javascript

More information

Chapter 9 Introducing JQuery

Chapter 9 Introducing JQuery Chapter 9 Introducing JQuery JQuery is a JavaScript library, designed to make writing JavaScript simpler and so it is useful for managing inputs and interactions with a page visitor, changing the way a

More information

Figure 1 Forms category in the Insert panel. You set up a form by inserting it and configuring options through the Properties panel.

Figure 1 Forms category in the Insert panel. You set up a form by inserting it and configuring options through the Properties panel. Adobe Dreamweaver CS6 Project 3 guide How to create forms You can use forms to interact with or gather information from site visitors. With forms, visitors can provide feedback, sign a guest book, take

More information

The course is supplemented by numerous hands-on labs that help attendees reinforce their theoretical knowledge of the learned material.

The course is supplemented by numerous hands-on labs that help attendees reinforce their theoretical knowledge of the learned material. Lincoln Land Community College Capital City Training Center 130 West Mason Springfield, IL 62702 217-782-7436 www.llcc.edu/cctc WA2442 Introduction to JavaScript Objectives This intensive training course

More information

django-dajax Documentation

django-dajax Documentation django-dajax Documentation Release 0.9 Jorge Bastida Nov 16, 2017 Contents 1 Documentation 3 1.1 Installation................................................ 3 1.2 API....................................................

More information

CSI 3140 WWW Structures, Techniques and Standards. Browsers and the DOM

CSI 3140 WWW Structures, Techniques and Standards. Browsers and the DOM CSI 3140 WWW Structures, Techniques and Standards Browsers and the DOM Overview The Document Object Model (DOM) is an API that allows programs to interact with HTML (or XML) documents In typical browsers,

More information

Web Development. With PHP. Web Development With PHP

Web Development. With PHP. Web Development With PHP Web Development With PHP Web Development With PHP We deliver all our courses as Corporate Training as well if you are a group interested in the course, this option may be more advantageous for you. 8983002500/8149046285

More information

JQuery WHY DIDN T WE LEARN THIS EARLIER??!

JQuery WHY DIDN T WE LEARN THIS EARLIER??! JQuery WHY DIDN T WE LEARN THIS EARLIER??! Next couple of weeks This week: Lecture: Security, jquery, Ajax Next Week: No lab (Easter) I may post a bonus (jquery) lab No quiz (yay!) Maybe a bonus one? Snuneymuxw

More information

How to lay out a web page with CSS

How to lay out a web page with CSS Activity 2.6 guide How to lay out a web page with CSS You can use table design features in Adobe Dreamweaver CS4 to create a simple page layout. However, a more powerful technique is to use Cascading Style

More information

Javascript Performance in the Browser. Charlie Fiskeaux II User Interface Engineer

Javascript Performance in the Browser. Charlie Fiskeaux II User Interface Engineer Javascript Performance in the Browser Charlie Fiskeaux II User Interface Engineer About Me & Circonus Lead User Interface Engineer for Circonus Industry-leading monitoring and analytics platform We deploy

More information

Understanding Angular Directives By Jeffry Houser

Understanding Angular Directives By Jeffry Houser Understanding Angular Directives By Jeffry Houser A DotComIt Whitepaper Copyright 2016 by DotComIt, LLC Contents A Simple Directive... 4 Our Directive... 4 Create the App Infrastructure... 4 Creating a

More information

KonaKart Shopping Widgets. 3rd January DS Data Systems (UK) Ltd., 9 Little Meadow Loughton, Milton Keynes Bucks MK5 8EH UK

KonaKart Shopping Widgets. 3rd January DS Data Systems (UK) Ltd., 9 Little Meadow Loughton, Milton Keynes Bucks MK5 8EH UK KonaKart Shopping Widgets 3rd January 2018 DS Data Systems (UK) Ltd., 9 Little Meadow Loughton, Milton Keynes Bucks MK5 8EH UK Introduction KonaKart ( www.konakart.com ) is a Java based ecommerce platform

More information

JavaScript, jquery & AJAX

JavaScript, jquery & AJAX JavaScript, jquery & AJAX What is JavaScript? An interpreted programming language with object oriented capabilities. Not Java! Originally called LiveScript, changed to JavaScript as a marketing ploy by

More information

Events & Callbacks (ESaaS 6.5)! 2013 Armando Fox & David Patterson, all rights reserved

Events & Callbacks (ESaaS 6.5)! 2013 Armando Fox & David Patterson, all rights reserved Events & Callbacks (ESaaS 6.5)! 2013 Armando Fox & David Patterson, all rights reserved Events" What: occurrences that affect the user interface" User interacts with a page element" Previously-set timer

More information

Theming WebGUI. Give your WebGUI site a new theme... WUC 2010 Ning Sun (ning) Pluton IT

Theming WebGUI. Give your WebGUI site a new theme... WUC 2010 Ning Sun (ning) Pluton IT Theming WebGUI Give your WebGUI site a new theme... WUC 2010 Ning Sun (ning) Pluton IT Outline A step-by-step guide to WebGUI-lize a theme Convert htlm/css template to WebGUI theme Or how to give webgui

More information

In this project, you ll learn how to create your own webpage to tell a story, joke or poem. Think about the story you want to tell.

In this project, you ll learn how to create your own webpage to tell a story, joke or poem. Think about the story you want to tell. Tell a Story Introduction In this project, you ll learn how to create your own webpage to tell a story, joke or poem. Step 1: Decide on a story Before you get coding, you ll need to decide on a story to

More information

CE212 Web Application Programming Part 2

CE212 Web Application Programming Part 2 CE212 Web Application Programming Part 2 22/01/2018 CE212 Part 2 1 JavaScript Event-Handlers 1 JavaScript may be invoked to handle input events on HTML pages, e.g.

More information

! The final is at 10:30 am, Sat 6/4, in this room. ! Open book, open notes. ! No electronic devices. ! No food. ! Assignment 7 due 10pm tomorrow

! The final is at 10:30 am, Sat 6/4, in this room. ! Open book, open notes. ! No electronic devices. ! No food. ! Assignment 7 due 10pm tomorrow Announcements ECS 89 6/1! The final is at 10:30 am, Sat 6/4, in this room! Open book, open notes! No electronic devices! No food! Assignment 7 due 10pm tomorrow! No late Assignment 7 s! Fill out course

More information

JavaScript: the Big Picture

JavaScript: the Big Picture JavaScript had to look like Java only less so be Java's dumb kid brother or boy-hostage sidekick. Plus, I had to be done in ten days or something worse than JavaScript would have happened.! JavaScript:

More information

JavaScript By: A. Mousavi & P. Broomhead SERG, School of Engineering Design, Brunel University, UK

JavaScript By: A. Mousavi & P. Broomhead SERG, School of Engineering Design, Brunel University, UK Programming for Digital Media EE1707 JavaScript By: A. Mousavi & P. Broomhead SERG, School of Engineering Design, Brunel University, UK 1 References and Sources 1. Javascript & JQuery: interactive front-end

More information

ver Wfl Adobe lif Sams Teach Yourself Betsy Bruce Robyn Ness SAMS 800 East 96th Street, Indianapolis, Indiana, USA WlM John Ray ^lg^

ver Wfl Adobe lif Sams Teach Yourself Betsy Bruce Robyn Ness SAMS 800 East 96th Street, Indianapolis, Indiana, USA WlM John Ray ^lg^ Betsy Bruce John Ray Robyn Ness Sams Teach Yourself Adobe Wfl lif ver W ^msssi^ mm WlM ^lg^ SAMS 800 East 96th Street, Indianapolis, Indiana, 46240 USA Table of Contents Introduction What Is Dreamweaver

More information

ASSIGNMENT #3: CLIENT-SIDE INTERACTIVITY WITH JAVASCRIPT AND AJAX

ASSIGNMENT #3: CLIENT-SIDE INTERACTIVITY WITH JAVASCRIPT AND AJAX ASSIGNMENT #3: CLIENT-SIDE INTERACTIVITY WITH JAVASCRIPT AND AJAX Due October 20, 2010 (in lecture) Reflection Ideation Exercise Bonus Challenge Digital Order from Chaos (15 Points) In Everything Is Miscellaneous,

More information

At the Forge Dojo Events and Ajax Reuven M. Lerner Abstract The quality of your Dojo depends upon your connections. Last month, we began looking at Dojo, one of the most popular open-source JavaScript

More information

The Yahoo! User Interface Library (YUI)

The Yahoo! User Interface Library (YUI) The Yahoo! User Interface Library (YUI) Nate Koechley nate@koechley.com http://nate.koechley.com/blog Refresh 06 Orlando, Florida 2006.11.17 1 YUI http://www.flickr.com/photos/cdm/50688378/in/set-1002108/

More information

Working with Javascript Building Responsive Library apps

Working with Javascript Building Responsive Library apps Working with Javascript Building Responsive Library apps Computers in Libraries April 15, 2010 Arlington, VA Jason Clark Head of Digital Access & Web Services Montana State University Libraries Overview

More information

0.9: Faster, Leaner and Dijit? July 25, 2007 Dylan Schiemann. presented by

0.9: Faster, Leaner and Dijit? July 25, 2007 Dylan Schiemann. presented by 0.9: Faster, Leaner and Dijit? July 25, 2007 Dylan Schiemann presented by Key Features Browser support Package/build system Easy widget building Declarative widget creation Rich built-in widget set Comprehensive

More information

(try adding using css to add some space between the bottom of the art div and the reset button, this can be done using Margins)

(try adding using css to add some space between the bottom of the art div and the reset button, this can be done using Margins) Pixel Art Editor Extra Challenges 1. Adding a Reset button Add a reset button to your HTML, below the #art div. Pixels go here reset The result should look something

More information

Getting Started with

Getting Started with Getting Started with Meganadha Reddy K. Technical Trainer NetCom Learning www.netcomlearning.com Agenda How websites work Introduction to JavaScript JavaScript Frameworks Getting Started : Angular JS Q&A

More information

Outline. AJAX for Libraries. Jason A. Clark Head of Digital Access and Web Services Montana State University Libraries

Outline. AJAX for Libraries. Jason A. Clark Head of Digital Access and Web Services Montana State University Libraries AJAX for Libraries Jason A. Clark Head of Digital Access and Web Services Montana State University Libraries Karen A. Coombs Head of Web Services University of Houston Libraries Outline 1. What you re

More information

FileNET Guide for AHC PageMasters

FileNET Guide for AHC PageMasters ACADEMIC HEALTH CENTER 2 PageMasters have the permissions necessary to perform the following tasks with Site Tools: Application Requirements...3 Access FileNET...3 Login to FileNET...3 Navigate the Site...3

More information

Terratype Umbraco Multi map provider

Terratype Umbraco Multi map provider Terratype Umbraco Multi map provider Installation Installing via Nuget This Umbraco package can be installed via Nuget The first part is the Terratype framework, which coordinates the different map providers,

More information