I hate when a browser is used as a front end for any complex application. It pretty much always ends up in click...lag...click...lag...click...lag...lag...lag. I think people forget that one can actually have a responsive UI because everyone is so used to everything being shoved into a browser these days.
But if it has to be done, maybe a possible way out of the current mess is to create a low level IL-like language, which can be executed very efficiently by a browser. And also a base class library that needs to be implemented by the browser to do basic IO (file, mouse, keyboard, screen, audio etc). The whole thing should be sandboxed similar to how it is in Java or .Net.
Then you have a clean and efficient foundation to build complex applications on that are platform and browser agnostic as long as the browser implements the relatively simple IL-like language (well, simple compared to everything a browser needs to implement today).