refactor 事件检测