Fix issue where canvas_frame doesn't exist

According to article found here:

http://stackoverflow.com/questions/14032301/gmail-getelementbyidcanvas-frame-keeps-returning-null-in-google-chrome

the canvas_frame isn't always used by Gmail, and where it's not used
the rendering happens in the top frame, so try to replace smileys
there as well.