This is a GameBoy Color emulator written purely in JavaScript by Grant Galitz.
The video is done either through HTML5 canvas or by a fallback of creating BMP binary picture format data URI strings and appending the result to regular HTML img tags.
Save states are implemented through the window.localStorage object, and are serialized/deserialized through JSON. SRAM saving is also implemented through the window.localStorage object, and are serialized/deserialized through JSON. In order for save states to work properly on most browsers, you need set the maximum size limit for DOM storage higher, to meet the needs of the emulator's save data size.
For more information about this emulator and its source code, visit the GIT repository at: https://github.com/grantgalitz/GameBoy-Online.