On Aug 9, 2007, at 5:17 PM, [EMAIL PROTECTED] wrote:

>
> So my original code sample was based on my application, which happened
> to use bindAsEventListener(). ... I
> originally said, but there still is a *serious* slowdown when I do
> Event.observe on IE6, and I'm not sure how to improve it.
>
> This is still a bit rough, but my code is here if you want to see the
> exact example:
>
> http://stage.whypaysticker.com/showroom/

Looks like a fun project.  My suggestions (some are repeats from  
earlier emails):

1. Don't use json.js.  It conflicts with many other libraries. You  
also don't need it--current Prototype versions have JSON support  
built in.

2. You're still doing the binding inside the loop instead of  
outside.  Bind once, use the reference inside the loop.

3. I like the other Tom's suggestion re the onclick event observing,  
although I'd take it a step further: observe only #carBrowser, not  
each row.   You can then use Prototype's findElement() function [a]  
to zero in programmatically on which div was clicked. e.g.  
Event.findElement(evt, 'div');, which should give you the div closest  
(stepping up the tree) to the click location. This is what event  
bubbling was created for! Take advantage of it.
a. http://prototypejs.org/api/event/findElement

4. The mouseouver/mouseout stuff really belongs in CSS (where it  
would be wicked fast).  I know IE6 has trouble with :hover unless  
it's dealing w/ <a>, so that might require adding some <a> tags to  
your markup ... but if speed is your primary concerns, I think it'd  
be worth the trade-off. Even if you choose not to move it to CSS, you  
could use a similar Event.findElement trick as suggested above, and  
only apply the observer to the rows rather than the individual icons.

5. If speedup is your primary concern, use a reverse loop, not each 
().  Each() is a great convenience method when speed costs are  
negligible, but does have a small performance cost associated with it.

http://home.earthlink.net/~kendrasg/info/js_opt/
for (i = arr.length; i < 0; i--) {

}

6. Instead of firing off an Ajax GET call immediately on page load,  
load the correct content from the server the first time.

7. Append your many new elements to an element/document fragment  
that's not part of the main DOM.  Then attach it all at once.  It'll  
be faster than adding 'em to the main DOM one at a time.


TAG

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to