It absolutely would. IE happens to be very sensitive to
"methodized" (and "wrapped" to some extent) methods. The problem is $
(as well as concat and $A) which does some heavy lifting in IE. Take a
look at this benchmark http://yura.thinkweb2.com/bench/test/performance/dom.html
There's a 10%-40% speed increase by simply replacing
"element.<method>" with "Element.<method>(element)" : )

- kangax

On Jun 25, 12:18 pm, Matt Foster <[EMAIL PROTECTED]> wrote:
> Kangax,
>
>          True, my example method isn't rock solid, I wasn't about to
> submit a ticket for it heh.  It would help to accommodate a string
> value being passed, but the documentation states that it only accepts
> a hash, this was more for proof of concept than the next big thing.  I
> am curious about the "methodized" inefficiencies, would it be more
> appropriate to set it as such...
>
> ele.setStyle = Element.Methods.setStyle.wrap...
>
> --
> Matt Foster
> Ajax Engineer
> Nth Penguin, LLChttp://www.nthpenguin.com
>
> On Jun 25, 11:40 am, kangax <[EMAIL PROTECTED]> wrote:
>
> > Matt,
> > I think he meant an "actual" height change, not just intercepting
> > #setStyle call. Timer seems like an only option in that case, and
> > you're right about performance hog. On a side note, I wouldn't
> > recommend "wrapping" an already "methodized" #setStyle - it's very
> > inefficient. It's also a good idea to see what "style" is, as it could
> > be either an object or a string. Moreover, "style.height" could be 0,
> > so "if (style.height && ... )" would not work as expected.
>
> > - kangax
>
> > On Jun 25, 10:47 am, Matt Foster <[EMAIL PROTECTED]> wrote:
>
> > > Hmm this is an interesting idea, so many different ways to access that
> > > property, and with no native property change model it seems
> > > impossible.  My first thought was using a timer but that is going to
> > > gum up resources.  If in your app you were savvy and used a setter
> > > method you could implement an event that would get this done.  Using
> > > prototype's setStyle, and ele being a valid dom reference you could do
> > > something like this
>
> > > ele.setStyle = ele.setStyle.wrap(function(prc, style){
> > >         if(style.height && this.getHeight() != 
> > > style.height.match(/^[0-9]+/
> > > g).first()){
> > >                 prc(style);
> > >                 this.fire("derka:heightChange");
> > >         }
> > >         else
> > >                 prc(style);
>
> > > });
>
> > > Which would work fine for a single element, if you wanted to observe
> > > multiple elements height change I'd suggest iterating over a
> > > collection of objects that needed this functionality and wrap their
> > > setStyle methods.
>
> > > Here is a basic working demo of this in action, be sure to have
> > > firebug working as the debug comes across in the 
> > > console.http://positionabsolute.net/projects/javascript/propertyChangeEvent/
>
> > > --
> > > Matt Foster
> > > Ajax Engineer
> > > Nth Penguin, LLChttp://www.nthpenguin.com
>
> > > On Jun 24, 9:12 pm, mocambo <[EMAIL PROTECTED]> wrote:
>
> > > > Could anybody give me any suggestions for observing
> > > > Element.style.height change ?
--~--~---------~--~----~------------~-------~--~----~
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 rubyonrails-spinoffs@googlegroups.com
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