Simon Willison’s Weblog

Subscribe
Atom feed for javascript

707 posts tagged “javascript”

2007

The Art & Science of JavaScript. My first author credit: I’m contributing a chapter to SitePoint’s next JavaScript tome.

# 15th October 2007, 10:35 pm / javascript, theartandscienceofjavascript, sitepoint, publishing, books

Using the jQuery test suite for your own projects. jQuery’s test suite has clever start(), stop() and expect() methods for running assertions within asynchronous code.

# 12th October 2007, 12:56 pm / jquery, javascript, testing, unittests

Global namespace pollution in IE. Another reason to avoid JavaScript global variables like the plague: IE creates a bunch of them for you which may well intefere with your own code.

# 10th October 2007, 10:10 am / internet-explorer, ie, javascript, globals

Native DOMContentLoaded is coming to Safari. I filed this bug over two years ago. They’ve just committed the resulting patch to trunk.

# 8th October 2007, 1:07 am / javascript, onload, browsers, domcontentloaded, safari, webkit

Roll out your own JavaScript Interfaces. Dustin shows how to build a tiny jQuery-style (chainable) library that contains your own JavaScript convenience functions.

# 6th October 2007, 12:20 am / dustin-diaz, javascript, jquery

I have another technique [...] that I'll be switching jQuery to. If you attempt to insert into the document.body before the document is fully loaded, an exception is thrown. I take advantage of that to determine when the document is fully loaded.

John Resig

# 26th September 2007, 12:21 pm / ie, domcontentloaded, jquery, javascript, unobtrusive-javascript

DOMContentLoaded for IE, Safari, everything, without document.write. Stuart has taken Hedger’s recent IE technique, combined it with the others and compressed it in to a short-as-possible code snippet that you can paste in to your scripts without having to include the whole of jQuery/YUI/Dojo/Prototype.

# 26th September 2007, 12:19 pm / ondomready, safari, ie, documentwrite, javascript, stuart-langridge, dom-scripting, unobtrusive-javascript

IEContentLoaded. An alternative method of detecting DOMContentLoaded on IE; works by polling until the doScroll() method on an unattached element stops throwing errors.

# 24th September 2007, 12:10 pm / dom-scripting, domcontentloaded, hedger-wang, ie, iecontentloaded, javascript, unobtrusive-javascript

Hello JS-CTYPES, Goodbye Binary Components. Mark Finkle is porting Python’s ctypes functionality to the Mozilla platform, to allow binary XPCOM components to be defined in pure JavaScript.

# 22nd September 2007, 11:57 pm / mark-finkle, ctypes, javascript, mozilla, python, xpcom

Apparently if you try to remove/destroy/trash a FORM dom node in IE6, it won't delete it, instead creating a bizarre orphaned node stuck sucking up memory until the browser window is refreshed.

Jon Sykes

# 20th September 2007, 1:04 pm / ie6, javascript, memoryleaks, jon-sykes

ActsAsUndoable. Lawrence Carvalho shows how robust undo functionality can be added to a JavaScript application through careful application of the Memento design pattern.

# 18th September 2007, 3:51 pm / actsasundoable, yui, javascript, undo, lawrence-carvalho, memento, design-patterns

The Elements of JavaScript Style. Douglas Crockford illustrates better coding practises through refactoring of old code.

# 13th September 2007, 8:22 am / douglas-crockford, javascript, refactoring, yahoo

jQuery 1.2. Lots of neat new stuff; my favourite new feature is “Partial .load()” which lets you pull in HTML with Ajax and then use a CSS selector to grab a subset of that page and inject it in to the DOM.

# 11th September 2007, 8:44 am / jquery, html, css, javascript, selectors

Google Maps API gets clickable polylines and polygons. Interesting explanation of how they optimised calculating the distance to the nearest point on a polyline.

# 8th September 2007, 12:58 pm / polygons, polylines, algorithms, google, googelmaps, javascript

Protoscript (via) JavaScript tool designed for easy prototyping of JS interactions; powered by YUI and jQuery.

# 7th September 2007, 10:55 pm / jquery, yui, javascript, libraries, prototyping, protoscript, bill-scott

HTTPOnly cookie support in Firefox. Five years after the bug was filed, HTTPOnly cookie support has gone in to the Mozilla 1.8 branch. This is a defence in depth feature that has been in IE for years—it lets you set cookies that aren’t available to JavaScript, and hence can’t be hijacked in the event of an XSS flaw.

# 6th September 2007, 6:27 am / httponly, brad-fitzpatrick, firefox, security, ie, mozilla, javascript

CouchDb: Some Context. CouchDb developer Jan Lehnardt wrote up detailed notes on slides from a presentation he gave back in June, explaining most of what’s interesting about CouchDb (although without the new JavaScript function query language).

# 4th September 2007, 2:31 am / javascript, couchdb, jan-lehnardt, nonrelational, slides

CouchDB: Thinking beyond the RDBMS. CouchDB is a fascinating project—an Erlang powered non-relational database with a JSON API that lets you define “views” (really computed tables) based on JavaScript functions that execute using map/reduce. Damien Katz, the main developer currently works for MySQL and used to work on Lotus Notes.

# 3rd September 2007, 9:48 am / couchdb, erlang, databases, json, javascript, damien-katz, lotusnotes, mysql, mapreduce

Freebase. Out of closed beta, although you still need an invite code to contribute. I hope they drop the JavaScript requirement for viewing content on the site.

# 3rd September 2007, 2:35 am / javascript, freebase, inaccessible

Google Web Toolkit: Towards a better web. Good overview of why GWT exists, but I take exception to the title: requiring JavaScript to even display something does not make the web “better”.

# 29th August 2007, 8:21 pm / javascript, google, gwt

jQuery 1.1.4: Faster, More Tests, Ready for 1.2. The backwards compatibility policy for 1.2 is pretty clever: provide a plugin that restores removed functionality (such as XPath selectors).

# 24th August 2007, 4:22 pm / jquery, javascript

Building a JavaScript Library. Slides from John Resig’s Google Tech Talk. Some great tips in here, including: make your APIs orthogonal, look for common patterns, keep things extensible and write the documentation yourself.

# 24th August 2007, 4:02 pm / john-resig, googletechtalk, slideshare, javascript, jquery, api-design, libraries

Live Query jQuery plugin. Ingenious plugin that lets you register jQuery event bindings to be executed when a new element matching the provided selector is added to the DOM. Performance is kept snappy by only running the check after a jQuery DOM manipulation method has been executed (append, prepend, attr etc); it won’t notice elements added using regular DOM methods.

# 22nd August 2007, 10:01 pm / jquery, javascript, dom, selectors, brandon-aaron, plugins

Fixing GC issues on IE 6: New IE download. Microsoft have released Windows Script Host / Script Runtime version 5.7, which apparently cleans up a bunch of IE 6 memory leaks.

# 17th August 2007, 11:50 pm / ie6, internet-explorer, microsoft, windowsscripthost, javascript, memoryleaks

Learning jQuery. An entire year’s worth of jQuery tutorials, split in to beginner, intermediate and advanced.

# 17th August 2007, 11:50 am / learningjquery, jquery, javascript, tutorials

Operation Aborted. Another fantastically obscure IE bug: appending new elements to the HEAD element breaks if a BASE tag is present.

# 16th August 2007, 11:21 am / ie, internet-explorer, bugs, javascript, operationaborted, shauninman

Prototype 1.6.0 release candidate. Prototype gets a long-needed update to its Event API, and some interesting new Function.prototype extensions.

# 16th August 2007, 8:49 am / prototype, javascript, events

Some Notes on the YUI Rich Text Editor. Dav Glass explains how he achieved the impressive feat of building a rich text editor widget that also works in Safari.

# 15th August 2007, 8:13 pm / safari, richtext, yui, dav-glass, javascript

Lazy Function Definition Pattern. Neat JavaScript trick: redefine a function the first time it’s called, for example to switch in different browser implementations based on object detection.

# 15th August 2007, 6:57 pm / javascript, pete-michaux

jQuery for JavaScript programmers

When jQuery came out back in January 2006, my first impression was that it was a cute hack. Basing everything around CSS selectors was a neat idea (see getElementsBySelector) but the chaining stuff looked like a bit of a gimmick and the library as a whole didn’t look like it would cover all of the bases. I wrote jQuery off as a passing fad.

[... 2,608 words]