I think the browser, the DOM, and JavaScript can't be pried apart. The public API to the DOM IS JavaScript, so fighting that is not worth it.

Instead, go with it. Use a translation layer between Smalltalk and the JavaScript.

That means a parser. That means OMeta, because it treats JavaScript as Assembly. And a Smalltalk parser for OMeta has been written. I made a movie about it.

http://www.youtube.com/watch?v=f2dyLKP_xJc

I'd say that the trick would be baking OMeta and the Smalltalk parser into a binary that could be loaded into a browser as a plugin.

Chris