The single advantage of using a bytecode is that you don't need to parse, validate complex code as you get an intermediate representation that gives the same semantics (albeit a different ugly to parse binary syntax). This will reduce the tokenizing, parse times, evaluating time and this translates somewhat to the the startup time of the application.
Java bytecode can integrate with DOM (it does in all Java Xml DOM readers) and it would integrate as easy to a JS machine (that would support Java bytecode). If you mean for "Java integration with DOM tree of page elements", this is also done (as Java FX).
I will not speculate about Dart capaiblity of creating a bytecode or not (I think it should be possible, even standardized, all is needed by a matter of principle is to be defined a bytecode and an AST tree visitor to fill this bytecode), but the issue it would solve, to have a less parsing time when starting Dart code, makes me think that it will be adopted still. Because when you get an error in your Dart based application, you will get a bytecode offset with an error which (imho) is against the spirit of the web.
Also, JS parsers are really fast as of today after 4-5 years of people optimizing Sunspider. If you want a bytecode, try to hope to an Asm.JS 2.0 which expects to give the capability to precompile code (to not have the "hit" of JIT compilation), GC support, and to not forget more browser support, as of today Mozilla, Chrome are supported, but not so much WebKit or IE (IE team said that they are interested into Asm.JS).