demo:
add back and forward
add hashchange deom
add popstate