in the short term sufficient, and essential. Addition of graphics would be an optional extra with very much less penetration for the moment." – Tim Berners-Lee http:/ /w3.org/History/1989/proposal.html
Java's dumb kid brother or boy- hostage sidekick. Plus, I had to be done in ten days or something worse than JS would have happened." Brendan Eich created JavaScript in 10 days. http:/ /en.wikipedia.org/wiki/Brendan_Eich
go visit her in the hospital. With prototypal inheritance, your leg would also (instantly) break. Object Inheritance #TLDR #TLDR = "Too Long, Didn't Read" aka: Sum it up for me :)
name of the Java programming language. Sun Microsystems (since acquired by Oracle) owned the trademarks for both Java™ and JavaScript™, and stewards the development of Java (not JavaScript). In 1997, JavaScript (the language) was standardized by the European Computer Manufacturers Association, and it was dubbed "ECMAScript." http:/ /en.wikipedia.org/wiki/JavaScript | http:/ /en.wikipedia.org/wiki/ECMAScript Um - what? Brief history of JavaScript = Clear as mud...
1995, MS begins to ship Internet Explorer with Windows 95. For Netscape, it was the beginning of the end. Microsoft also reverse- engineered JavaScript, as "JScript." http:/ /en.wikipedia.org/wiki/Internet_Explorer
language Who is responsible for JavaScript now? {to name a few... http:/ /en.wikipedia.org/wiki/JavaScript | http:/ /en.wikipedia.org/wiki/ECMAScript TM of Oracle (via Sun) Defines the ECMAScript DOM API
supported fairly consistently in all major browsers. ⾨ This is Wikipedia's compatibility table* for: – Trident (IE) – Gecko (Firefox) – WebKit (Chrome & Safari) – Presto (Opera) * I realize those are rendering engines, not specific JS engines (which change names more rapidly). It's how Wikipedia lists 'em. http:/ /en.wikipedia.org/wiki/Comparison_of_layout_engines_(ECMAScript)
interact with XML/HTML, ala: window.document.getElementsByTagName('*'); The DOM is stewarded by a different group than governs JS. Browsers also implement it slightly differently. For instance, IE historically didn't treat whitespace as text nodes, even though the official DOM spec says it should. http:/ /w3.org/DOM
moment. You own it, you better never let it go... You only get one shot, do not miss your chance to [load]." (with apologies to Eminem) window.onload http:/ /en.wikipedia.org/wiki/8_Mile_(film)
other capable JavaScript libraries: Dojo, MooTools, Prototype, YUI, etc. As is almost always the case with code, the problem is actually a human one. We've become complacent and forgotten (or never learned) how JavaScript works. Beware the danger of abstraction & illiteracy. http:/ /ejohn.org/blog/javascript-language-abstractions
CHSS, ("Cascading HTML Style Sheets"), but was later shortened to simply CSS. 1996: The first browser to support CSS was Internet Explorer 3.0, followed closely by Netscape Navigator version 4.0. http:/ /people.opera.com/howcome/2006/phd
from a practical standpoint. It was extremely rigid. A page simply would not render, if it wasn't perfectly formed from an XML structural standpoint. Oh, and it would've done away with <img>. Oh noes!
Marketing already got ahold of it.) HTML is to be considered an ever-evolving "living standard." The WHATWG — Web Hypertext Application Technology Working Group — will continue to work on HTML, and the W3C will snapshot feature sets periodically, and tag them with incremental version numbers: HTML5 (and presumably, HTML6, etc). Thus, no more version numbers in DOCTYPE…
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1-transitional.dtd"> <— Much easier to remember! As it turns out, <!DOCTYPE html> is the minimum number of characters to trigger "standards" mode in older IE versions.
/> <link rel="stylesheet" href="/path/file.css" type="text/css" media="all" /> Note: Media queries are best defined via @media in a single stylesheet anyway, to avoid unnecessary HTTP requests. No? Me neither, so why "type" it?
valid. HTML5 is no longer a sub- set of SGML like all versions of HTML before it. Nor is it a spin on XML, like XHTML 1.x was. HTML is just HTML now. This is how browsers always treated (X)HTML anyway. I know what you XHTML purists are thinking: ( phew! ) http:/ /en.wikipedia.org/wiki/HTML
charts To be fair, IE renders SVG very fast, via hardware acceleration. Konqueror (WebKit predecessor), was the first browser to have built-in SVG support, in 2004. http:/ /user.sitepen.com/~dwalsh/dojo-charting.html
=> JS Note: Yes, I'm sure there are many, many more examples in the wild. But my time is finite, and this is what I'm familiar with. http:/ /haml-lang.com | http:/ /sass-lang.com | http:/ /compass-style.org | http:/ /coffeescript.org
the fence regarding meta languages that treat whitespace as significant. Usual disclaimers apply: "It depends." Your mileage may vary. No purchase necessary. Machine-wash only. Enter at own risk. Batteries not included. Void where prohibited, etc.
saves keystrokes, and those languages are pretty #yawn anyway, right? I mean, they're declarative, so of course we should automate them. But do not touch my JavaScript.
sue = 2; var bob = 3; Minifiers like Uglify JS can handle removing repeated var keywords. Put that burden on automation, not yourself. https:/ /github.com/mishoo/UglifyJS | http:/ /marijnhaverbeke.nl/uglifyjs
a great tool for checking for JS errors. But validation is a means to an end, not a goal in itself. If you want to ensure JSLint compliance, there's CoffeeScript... http:/ /jslint.com | http:/ /jshint.com
console.log obj[i] var i, obj; obj = { foo: 'bar' }; for (i in obj) { console.log(obj[i]); } You would have to actually type this in CoffeeScript. Then the resulting JavaScript output is a "for in" loop.
Controller (MVC) or… — Model, View, View Model (MVVM) — Two-way data binding… If user interacts with page, you can reflect these changes in your data — Declarative UI: in markup, not in JS — Observables: If data changes, UI updates
function(key, reverse) { var self = this; self.sort(function(a, b) { var a_key = String(a[key]); var b_key = String(b[key]); var n, val; if (reverse) { n = a_key - b_key; val = !isNaN(n) ? n : b_key.localeCompare(a_key); } else { n = b_key - a_key; val = !isNaN(n) ? n : a_key.localeCompare(b_key); } return val; }); };
str = '.table-data th[data-key] a'; body.off(event).on(event, str, function(ev) { var el = $(this); var th = el.closest('th'); var th_other = th.siblings('th'); var key = th.attr('data-key'); var sort = th.attr('data-sort'); var asc = 'ascending'; var desc = 'descending'; var dir = asc; if (!sort || sort === asc) { dir = desc; } var reverse = dir !== asc; th.addClass(on).attr('data-sort', dir); th_other.removeClass(on).removeAttr('data-sort'); APP.data.sort_by(key, reverse); }); },