1. add support for shift tab

2. fix the error on chrome, the data is not fully correct, don't know why, so add some code to directly attach data on the element to workaround it.