(JavaScript) Hackmeetup Oresund, July 22nd
Quick pointer to tomorrow’s hackmeetup in Malmö: http://upcoming.yahoo.com/event/921335/. Yours truly will be doing a very speedy version of my sIFR talk at Singularity, hopefully combined with some weird JavaScript hacks.
Detecting Page Zoom in Firefox 3 (And Others)
Firefox 3, or, technically, Gecko 1.9, comes with support for full page zoom. It works by scaling CSS pixels when the page is rendered – from the perspective of JavaScript or CSS there is no difference between a page zoomed to 200%, 50% or 100%. The article explains two ways of detecting zoom levels.
On DOM Load (and CSS, too)
On solutions for DOM load and CSS applied.
Maximum Call Stack Size in Modern Day Browsers
I had to write a depth-first tree iterator recently – at Xopus of course – and I wondered about the call stack size. Here is the test, and the results.
Memory Leaks: Gone!
At Xopus we develop a pretty big (~50k lines) JavaScript application to edit XML documents through a WYSIWYG interface. With such a large application there’s a large risk of memory leaks. Indeed, this is what we’ve been experiencing in Internet Explorer 6. We’ve also seen a decrease in performance as memory usage increased. These leaks, however, do not occur in Internet Explorer 7. And, as of just 10 days ago, they no longer occur in IE6 on Windows XP.
sIFR 3: Revision 209
Cool updates for sIFR 3.
Port Scanning Without JavaScript
For the past few months I’ve been following the ha.ckers weblog, which talks about hacking websites and otherwise internet-connected systems. In the most recent two posts (part 1, part 2) a way to do port scanning without JavaScript is discussed. This all harks back to early August, when SPI Dynamics discussed port scanning using JavaScript. An often heard counter measure to this technique is disabling JavaScript, but it turns out that won’t be enough.
DOMContentLoaded: Test Cases and Musings
Discusses how to properly do DOMContentLoaded in Internet Explorer and tackles issues with Safari and Opera.
Crashing Firefox 1.0.0 in One Line of Code
I was looking at a bug report for sIFR today. It discussed how sIFR 3 crashed Firefox 1.0.0 on Windows. After the better part of the evening, here’s what I found: if you create a non-anonymous method, declare a variable inside it and set a property on the function object with the same name as the variable (and whatever value, I used null), Firefox 1.0.0 will crash after about ten seconds after loading the page.
JavaScript Threading: Quick Tip
How to run JavaScript code after the current thread has finished executing.
Leaky Abstractions in DOM Programming
In which a close look is taken at how platform characteristics influence DOM programming.
Externally Declared Global Variable Leak
It is possible to create a memory leak in Internet Explorer… by not referencing an object more than once. This article explains how and gives tips on avoiding the problem.
DHTML as a Straw-man
DHTML is, like HTML before it, painted in a bad light, whereas XHTML and DOM Scripting are purportedly the best (and therefore only) way ahead. When you look more closely at the practices so easily associated with XHTML and DOM Scripting you see a different picture.
Caught Redhanded: QuickTime Stealing Flash
Sometimes QuickTime may take over handling Flash content. As QuickTime is only compatible with Flash 5, this can pose major problems.
Getting Funky With Scopes and Closures
The most powerful thing about the JavaScript programming language are it’s scoping rules. In this article I’ll talk about scope and how it relates to functions and closures. There’s some kick-ass stuff you can do with it!
Optimizations
When optimizing, you have to make sure it actually helps.
Paul Graham on “Ajax”
Paul Graham on “Ajax”.
Experiment: Function.$case
(Partially) implementing Ruby’s case/when/else in JavaScript, as inspired by Java’s signature-identified methods.
Adding Events, Recoded
My entry for the addEvent() recoding contest.
Open Letter to the DOM Scripting Task Force
A couple days ago the DOM Scripting Task Force emerged into the public. But I’m wondering if their focus is correct.
Books
I’m in a book, and I closed a book, and the opening of another has to wait for a few days.
Event Cache Follow-up
An Observation About Ajax
Why DHTML hackers hate Ajax, and everybody else loves it.
Implementing :target in IE
A way to implement :target in IE.
More Seriously: Why CSS Doesn’t Define Behaviour
Why CSS doesn’t define behaviour. The more serious follow-up on How to use the DOM for :hover.
How to use the DOM for :hover
How to use the DOM in order to do :hover.
You’ll also want to read the more serious follow-up.
The Myth of Object Detection
Why object detection doesn’t always work.
JavaScript Terminology
This is an introductory tutorial to the sIFR Explained series. It’ll be updated from time to time when more information is necessary.
sIFR Explained
This is a series about how the JavaScript code in sIFR works.
Event Cache
Provides a way for automagically removing events from nodes and thus preventing memory leakage. Licensed under [CC-GNU LGPL][license]. Download the [source][].
Secure Gmail
A GreaseMonkey extension which ensures Gmail uses the secure connection. Written and published on Tuesday, March 8, 2005. Licensed under CC-GNU LGPL. Download the source.
MyBlogLog Dissected
In this article I dissect the MyBlogLog JavaScript code, suggest improvements and quickly discuss some of the privacy concerns scripts like these create.
Named Arguments
Implementation of named arguments in JavaScript. Written in December 2004 for sIFR. Licensed under CC-GNU LGPL. Download the source.
Named Arguments
Implementation of named arguments in JavaScript. Written in December 2004 for sIFR. Licensed under CC-GNU LGPL. Download the source.



