クリック イベント ハンドラーをアンカー タグにアタッチしてcheckValid
、要素を検証し、実際のハンドラーを setTimeout 0 で呼び出します [これにより、ブラウザーはその実行を進めることができます]。
//Code is just illustration
function checkValid() {
if(valid) {
setTimeout(reloadDiv, 0);
}
}
function reloadDiv() {
console.log(window.location.href);
}
同じアンカー タグのデフォルト ハンドラは、 を使用してウィンドウの位置を変更しますhistory.pushState
。
setTimeout(reloadDiv, 0) のおかげでwindow.location.href
、イベントをキューの最後にスケジュールしているので、適切になると予想していました。
しかし、それは起こっていません。setTimeout 期間を 500 ミリ秒にすると正常に動作しますが、これはブラウザやネットワーク速度全体で一定に保たれているようには見えません。ウェブサイトが使用するときに適切な href url を取得するより良い方法はありますhistory.pushState
か?
注:コードが実行されているドメインを所有していません