13. The History of Javascript
• 1995 JavaScript in Netscape
• 1996 JScript in Internet Explorer
• 1997 ECMAScript standard
• 1999-2005 – Ajax roll-out
• 2006 XHR standard
• 95% Javascript enabled
• Huge platform
★ 13
14. Javascript
• Weird name
• Complete language
• Object orientered
• First-class functions
• Dynamically typed
• General purpose
★ 14
15. CSS HTML
Document Object Model
Javascript
layout
★ 15
16. DOM
CSS
<!DOCTYPE HTML JS
<html> JS
DOM != source code <head>
<title>Index</head>
</head>
<body> Webserver
★ 16
17. ARGH!
// Mozilla, Opera and webkit nightlies currently support this event
if ( document.addEventListener ) {
// Use the handy event callback
document.addEventListener( "DOMContentLoaded", function(){
document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
jQuery.ready();
}, false );
// If IE event model is used
} else if ( document.attachEvent ) {
// ensure firing before onload,
// maybe late but safe also for iframes
document.attachEvent("onreadystatechange", function(){
if ( document.readyState === "complete" ) {
document.detachEvent( "onreadystatechange", arguments.callee );
jQuery.ready();
}
});
// If IE and not an iframe
// continually check to see if the document is ready
if ( document.documentElement.doScroll && window == window.top ) (function(){
if ( jQuery.isReady ) return;
try {
// If IE is used, use the trick by Diego Perini
// http://javascript.nwbox.com/IEContentLoaded/
document.documentElement.doScroll("left");
} catch( error ) {
setTimeout( arguments.callee, 0 );
return;
}
})();
}
★ 17
19. Annoying API
var newDiv = document.createElement("div");
newDiv.innerHTML = "<h1>Hej fra Danmark!</h1>";
var orgDiv = document.getElementById("orgDiv");
document.body.insertBefore(newDiv, orgDiv);
★ 19
28. jQuery
• Started January 2006
• Simplify and speed up webdevelopment
• DOM query language with CSS-notation
• Minimal core – extendable through plugins
• Unobtrusive
• Test suite 50 browsers, 11 platforms
• Large community – lots of plugins
★ 28
34. jQuery basics
• Include a single Javascript file
• jQuery uses 19 KB
• Only adds ”jQuery” to the global scope
• Everything is accessed through the jQuery object
• $ is a shortcut
★ 34
51. Event Handler Callbacks
• this always points to the DOM element
• The event is passed as the first argument
$(”a”).click(function(event) {
alert(event.type);
alert(this.href);
alert($(this).attr(”href”));
});
★ 51
56. Plugin System
• Goal: keep a small jQuery core
• Plugin system provides extensibility
• >4.500 plugins
– Ajax, animations, forms, menus, widgets
• Easy to build
• Lots of small plugins
★ 56
Lau: uni, 27 år, nørd – Gaja 1982, nørdet, nørdet på en anden måde IOLA: 3 år, ungt softwarefirma, webapplikationer jQuery + Python!
Webudviklere? Javascript? DOM? AJAX? jQuery?
Pardigmeskifte – opføre sig mere som applikationer, webplatformen smooth, ingen installation Brugeradfæren ændrede sig, ikke længere sidde passivt, facebook, forums, open source software Få sideskift, længe på hver side Brugeroplevelsen – fra information -> en oplevelse, meninger og holdninger Højere kompleksitet – krav til udvilkingsværktøj
Nem interaction, intuitivt, umiddelbart, nemt at interagere, web2.0 deisgn = simplicitet, ellers går brugerne et andet sted hed
Document Object Model (DOM) Webplatformen Bruges mere og mere til forretnings applikationer
1995: kendt som DHTML, ingen ajax XHR: 1999 MS, 2000-2002 Mozilla, standard 2006
I/O, adobe air Navn: LiveScript, standardiseret som ECMAScript Anden halvdel af bogen, webdelen, det dårlige ry, browser wars
Dom indeholder: xml struktur, styles, event, data Gennemgå hvorfor js har dårligt ry, danner grundlaget for jquery
Browser implementationer, ingen standard, mange bugs, Mozilla i 1995, Microsoft jScript 1996
Vedligeholdelse, SEO, tilgængelighed
Mange amatører, ingen klasser, dynamiske typer
Mon vores utopiske drømme om at have et kortfattet lækkert nemt-at-huske grænseflade til DOMen kan komme i opfyldelse? 2 hovedfokus for js libs, browser forskelligheder og gør almindelige opgaver nemmere
DOM, events, animationer og Ajax
jQuery er et forholdsvist nyt toolkit
Stor test suite, depricated IE 5.5
Stort community, solidt, mange udvilkere, MIT licens
DOM mulipulation
Et par eksempler
Ren javascript, jquery plugin,
IE8 og Safari har også dev
Fortolkere, ny browser krig, Features: lokal data store, cross-site XHR Desktop: AIR, adobe suite