Can someone explain to me why WebAssembly is restricted from accessing the DOM or the Web APIs? I haven't been able to find a reason.
Because before it can access the DOM, it needs to support:
* reference types * interface types * exception handling * typed function references * garbage collection
I.e. most WASM proposals must be accepted before we can use the DOM from WASM... by the pace it's been moving forward, I guess this will take at least several years (3-4+).