Tapestry Training -- From The Source

Let me help you get your team up to speed in Tapestry ... fast. Visit howardlewisship.com for details on training, mentoring and support!

Friday, March 17, 2006

Bitten by IE once again

If there was ever a single piece of software I hated with a passion, it would be Internet Explorer. I had let my seething resentment for this abomination settle for a while, as I do all my browing and development using FireFox.

However, with my project developer hat on, I have to support IE. My client, of course, is interested in IE support (given their user base, IE use will likely predominate). On just one page of my application, we hit the Operation Aborted error. The symptoms of this is that a page paritially loads, then a modal popup announces "Operation Aborted", and when you click OK, you are sent to the "This page cannot be displayed" page. I'm still tracking down the documentation, but it appears to be about a race condition where JavaScript modifies the DOM before IE is ready for it.

Now, I would have thought Tapestry would be safe from this, because of its approach to JavaScript ... the fact that JavaScript goes in proper places, at the top of the document, or at the bottom, rather than scattered throughout the document.

Doesn't matter; this page uses a DatePicker component, nested within a few tables for layout (a new reason why tables for layout is a bad approach) and apparently that's enough to trigger this bug in IE.

Side note: I talk a lot about the importance of Feedback, that tools should clearly identify problems and guide you to solutions. On a grading scale of A - F, IE would receive the grade take out back and put down like a rabid dog on this issue. And many others.

I have a couple of leads on this bug:

I'm going to see if using the Tacos DatePicker will work better than the built-in Tapestry DatePicker.

Update: The Tacos DatePicker did the job. Better yet, the latest DatePicker (from Tacos 4 beta 2) is simply stunning from both a visual and a useability perspective.

4 comments:

Anonymous said...

I'm having issues with IE / Tapestry / Javascript when using a @Body tag. Javascript gets generated whether I want it or not for any @Form tag. Tapestry generates javascript for the form like:

Tapestry.register_form('myForm');


IE complains that "'Tapestry' is undefined".

Unknown said...

Paul,

Sorry ... this isn't a support forum. Please take this to the tapestry-user@jakarta.apache.org mailing list.

Anonymous said...

my experience is that you should never modify the dom before window.onload has been executed.

If you use prototype, this nice snippet makes everything quite easy:

Event.observe(window, 'load', function()
{
init code here
});

Anonymous said...

Tell me about it! we have had no end to the insufferable IE browser bugs for years... Unfortunatly we have to live with IE though!

After installing Tacos I had similar problems... I found my fix for IE though on the mailing lists. The renderBaseTag="false" needs to be set on the jwcid="@shell" component. It might be worth including this in the Tacos setup documentaion, as it would be a shame for those evaluating Tapestry and Tacos.