1. ホーム
  2. javascript

[解決済み] window.location.hrefが変更されたときのイベント

2022-08-22 10:17:32

質問

私はあるサイトのために Greasemonkey スクリプトを書いています。 location.href .

どうすればイベントを (via window.addEventListener などで) window.location.href がページ上で変更されたとき?私はまた、新しい/変更されたURLを指すドキュメントのDOMにアクセスする必要があります。

私はタイムアウトとポーリングを含む他のソリューションを見たことがありますが、私は可能であればそれを避けたいと思います。

どのように解決するのですか?

ポップステートイベント :

popstate イベントは、アクティブな履歴項目が変更されたときに発生します。 [popstateイベントは、戻るボタンをクリックする(あるいはJavaScriptでhistory.back()を呼び出す)など、ブラウザのアクションによってのみ発生するものです。)

というわけで、試聴 popstate イベントと送信 popstate イベントを使用する場合 history.pushState() を実行すればよいのです。 href を変更します。

window.addEventListener('popstate', listener);

const pushUrl = (href) => {
  history.pushState({}, '', href);
  window.dispatchEvent(new Event('popstate'));
};