The problem is, when you have pages that have Ext components (combos, grid, etc.) that need script processing to "fix up", you get different display behavior when using Ajax when compared to normal page load.
For example, I have a page that has a grid. With a normal full page get, the page loads quite quickly and all at once. When loaded via Ext.get().load, there is a noticeable delay between showing the surrounding HTML of the Ajax request and the grid appearing. This is apparently is a result of how Element.udpate works as outlined above. This delay is much more pronounced when the content is loaded in the content area of a complex border layout as the Grid rendering now takes 3-5 times longer due to updateRule performance. Further, the load completion callback is pre-mature, at the time of html insertion, not after script execution. In my case, the loading mask is removed before the grid is even displayed.
Yes, I can work around some of these problems...
My question, however, is why not let the scripts run upon insert? When is the update approach currently used by Element.update (and in Prototype) necessary? Is this a cross browser issue? Would it make sense to have an alternative, direct execution Renderer to use when appropriate?
Ext.get('my-div').updateManager.renderer = new MyInsertRenderer();
Now, when ajax content is loaded into the element via something like the following, this new renderer will be used.
Ext.get('my-div').load({ url: url, scripts:true});
el.select('> >').remove(); is going to be slow if the body is large.