This is a GameBoy Color emulator written purely in JavaScript by Grant Galitz.
The graphics blitting is done through HTML5 canvas, with the putImageData and drawImage functions.
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.