prog: (Default)
[personal profile] prog
Last night's growling due to happy news: my web-client work is more or less integrated into (my test branch of) the volity.net website, and it works on all browsers I can be bothered to care about, including Opera (yes, I have tested it on my Wii) and both MSIEs. I'm going to push to take it live by month's end.

It's technically not slippage, because my original deadline was Sept. 30. Let us ignore all the boasting about earlier releases I did a month ago.

I do all my JavaScript development on Firefox + Firebug, and Safari generally follows suit without any extra work. It took me an hour or two on Saturday to make it Opera-compatible, figuring out that it didn't like how I was handling cookies. Opera seems to insist that you set the cookie header used for subsequent AJAX calls with the DOM's document.cookie property, and no other way will do. Fine, whatever.

It took all day Sunday to get the MSIEs in line. They are turds and I hate them. Their only redeeming feature in this matter is the surprising fact that both 6 and 7 had the same problems, and I got both to work simultaneously.

The IE problems, each of which took far too long to isolate:

  • IE silently ignores requests to add <tr>s to <table>s via the DOM appendChild method. You must instead add them to a <tbody> which is itself a child of the table. Seriously, what the fuck; who uses <tbody> normally?

  • IE caches the result of each AJAX call, and subsequent calls to that same URL (a very common polling pattern) will result in no request at all being made, but instead a silent return of the old value, so it looks like it made a request. You can get around this by (meaninglessly) adding the current time to the URL's query string, or adding a bogus If-Modified-Since header to the request. (On the plus side, this made me finally add decent logging to my server-side daemon, since I couldn't figure out what was going wrong without it.)

  • For the life of me, I couldn't use any Prototype.js methods to refer to elements that had been added to the DOM tree since the document's original rendering. I finally punted, adding such elements to some global arrays upon creation (with apologetic code comments noting how fucking stupid MSIE is) and just accessing those instead later on.

Working with Microsoft software as a developer makes me so angry. It makes me angrier than thinking about the current American government and its foreign policy, because I usually burn through that in a few minutes. But working with Microsoft means wading around waist-deep in a vat of pure shit for hours. It gives me a hate that can last for days afterwards. I really hope I can minimize exposure to it as the web client project moves forward.

Date: 2007-09-24 11:38 pm (UTC)
From: [identity profile] daerr.livejournal.com
AJAX and MSIE wise I think you can also fix this by setting the various "don't cache this" on your response from the server. Or is that not the case?

August 2022

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28 293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 9th, 2025 01:30 am
Powered by Dreamwidth Studios