经过简单重构，使用类的方式存储每次运行的上下文（在以前版本是做不到这一点的——简单的存储在变量中会被覆盖）；另外，还没精确实现hover类的控制