So I am working on two quick prototypes that are heavy on the Ajax/Javascript front. Been a while since I had to code stuff like that myself actually since in the past years I have always managed to push that kinda of work to other people on the team. Anyways in the prototypes I am doing a bit of drag and drop, I have sliders, moveable popup panels, forms that get submitted via Ajax and that update parts of the interface and web 2.0 stuff like that.
I am using prototype/script.aculo.us for most of the stuff, but I am also using YUI! for the panels and some listener stuff. Maybe I could have gone with just one of the two, but since its a prototype I figured I use the opportunity to learn about as many widgets libraries as possible.
I found a nasty bug in prototype 1.5.0_rc0 that results in select tag's being submitted with the labels instead of the values of the option tags when using Form.serialize(). Well 1.5.0_rc1 fixes this issue, but breaks handling of multi selects as it only passes the last item. Oh well .. rc1 is the latest bundled version for script.aculo.us, so I left it there and stuck with rc0 and worked around that bug with some extra code in the business logic. Aside from that I found the slider to be a bit clumsy to use. There is no reset() method for example, so I had to hack in some stuff for that.
The YUI! panel worked out pretty easily. The documentation is fairly decent. I did stumble over some issues when I was using the listener for the click event on html that could get updated via Ajax. After removing the listeners things broke on MSIE. This was caused because MSIE 6 (MSIE 7 actually had no issues), did not like me calling the render() method before the entire page was loaded. So in the end I readded the listener for the rendering, but left the click listener out. I also had to set the panel div's as display: none initially because otherwise they would get shown during the loading of the page.
With a minor additional hack to call my custom reset method I also got the sliders to initialize properly on Opera. I have not yet done testing on Safari, but I am quite happy with the results so far with things working on FF 2.0, MSIE 6/7 and Opera 9.