Current Google Docs already uses iframes to intercept keyboard/text events, the document you actually see isn't the thing you're interacting with, because contentEditable is nowhere near powerful enough for something like this.
All their decision to use canvas is doing is changing the render target.
All their decision to use canvas is doing is changing the render target.