Could anybody give me any suggestions for observing Element.style.height change ?
on 2008-06-25 03:13
on 2008-06-25 16:48
on 2008-06-25 17:41
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 2008-06-25 18:19
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, LLC http://www.nthpenguin.com
on 2008-06-25 18:34
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 2008-06-25 22:35
Thanks for discussion. The main goal is to set scrollbars (not native) instantly when div height goes bigger than document viewport height. I got an idea to fire an "custom" event every time when something added into this div.
on 2008-07-08 20:45
I just rant your test in FF3 & IE7 - the difference is significant, especially in IE. Do you know what accounts for that? Is there any drawback to using Element.<method> instead of element.<method> (beyond extra typing)?
on 2008-07-08 20:50
What accounts for it is the fact that methodizing a function requires an additional layer of indirection, an additional function call, and a bunch of argument processing, each time the method is invoked. In other words, every call to element.method(...) has to push element onto the front of the parameter list, and call Element.Methods.method(element, ...). Depending on the browser, this array processing and calling a re-bound function really adds up. -Fred On Tue, Jul 8, 2008 at 1:00 PM, email@example.com <firstname.lastname@example.org> wrote: > > I just rant your test in FF3 & IE7 - the difference is significant, > especially in IE. > Do you know what accounts for that? > Is there any drawback to using Element.<method> instead of > element.<method> (beyond extra typing)? -- Science answers questions; philosophy questions answers.