September 5, 2008
Closures particularly are one of its most awesomely powerful features. Once properly understood they tend to roll off the keyboard almost by accident. It makes you wonder how you ever wrote software which doesn’t have them.
Much like my comments about C# thread syntax being easy to use and abuse without realising it, closures are easy to create, but have potentially harmful consequences for the unwary, particularly in IE. To avoid accidentally stepping on a closure landmine it is necessary to understand their mechanism. This depends largely on the role of scope chains in identifier resolution and so on the resolution of property names on objects.
Laurens van den Oever’s solution to stop you wetting yourself when programming for IE is a good one. Incidentally, I needed a good XML to JSON converter and fairly randomly chose Thomas Frank’s to get me going. I intended to revisit this and write my own, but it’s been so good I shan’t bother – it’s been flawless.
February 5, 2007
MSDN fully describes how to implement custom protocols schemes using pluggable handlers. This allows developers to implement new schemes for IE and applications that use URL monikers. To fully implement a protocol requires a fair bit of work and is really focused on use in IE.
My particular requirement at the time was managing users expectations that custom hyperlinks could be used to integrate an application into the desktop using IE and the Office suite. IE would be pretty easy, but Office? However, as the article explains, it’s possible to hijack the regular hyperlink behavior and piggyback your own. Consequently you can use regular html anchor syntax to implement your own link behavior – in this case my very important protocol vip.
<a href="vip:some custom parameters here">My custom hyperlink</a>
Put this in a Word or Excel document, it’s displayed as a regular link and when the user clicks on it, your protocol handler catches it.
More recently, I was contacted by Eric Lawrence, the program manger of IE, informing me I’d made a mistake in calling this asynchronous pluggable protocols. I’d only really used a side effect of it. However, he did point out that what I had discovered was something called Application Protocols; something they use internally in the IE group.
Despite my smugness in discovering this, it was good to be corrected.