Much of modern JavaScript has continued the trend toward compartmentalization of code by utilizing late-binding to attach itself to objects, instead of the traditional "onX" handlers embedded in the HTML. This is normal for pretty much every other language. But in HTML, the debug tools for this (primarily, of course, Firebug) don't do a very good job of enabling straightforward access to them, making debugging modern dynamic apps a lot more difficult than it needs to be.
In our case, this has had the effect of moving more of our development toward Flex and away from heavy-JS apps. Throw in the development headaches of trying to make any even moderately intense JS-based app work well in IE6 & 7, and Flex makes a lot more sense than it used to.