1

クリック イベント ハンドラーをアンカー タグにアタッチして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か?

注:コードが実行されているドメインを所有していません

4

0 に答える 0