ホームページ  >  記事  >  ウェブフロントエンド  >  Greasemonkey スクリプトで MutationObserver を使用して「location.href」の変更を検出する方法

Greasemonkey スクリプトで MutationObserver を使用して「location.href」の変更を検出する方法

DDD
DDDオリジナル
2024-10-27 20:30:30312ブラウズ

How to Detect Changes in `location.href` Using MutationObserver in Greasemonkey Scripts?

Location.href 変更イベントをリッスンする

Greasemonkey スクリプトを作成する場合、Web サイトが location.href を変更するときに特定の操作を実行する必要がある場合があります。 。この記事では、時間のかかるタイムアウトやポーリングの代わりに DOM 変異オブザーバーを使用して、この変更に対応する方法について説明します。

解決策

<code class="js">window.onload = function() {
    var bodyList = document.querySelector('body');

    var observer = new MutationObserver(function(mutations) {
        if (oldHref != document.location.href) {
            oldHref = document.location.href;
            // 执行相关的操作
        }
    });
    
    var config = {
        childList: true,
        subtree: true
    };
    
    observer.observe(bodyList, config);
};</code>

このスクリプトは、DOM 変異オブザーバーを使用して、body 要素内の変更を含むドキュメント全体の変更をリッスンします。 location.href の変更が検出されると、オブザーバー コールバック関数がトリガーされ、必要なアクションを実行できます。

最新の JavaScript 仕様を使用

<code class="js">const observeUrlChange = () => {
  let oldHref = document.location.href;
  const body = document.querySelector('body');
  const observer = new MutationObserver(mutations => {
    if (oldHref !== document.location.href) {
      oldHref = document.location.href;
      // 执行相关的操作
    }
  });
  observer.observe(body, { childList: true, subtree: true });
};

window.onload = observeUrlChange;</code>

このスクリプトは、ES6 のアロー関数と Observe メソッドを備えた最新の JavaScript 仕様を使用します。これは上記のスクリプトと同等であり、location.href の変更をリッスンするためのよりクリーンな方法を提供します。

以上がGreasemonkey スクリプトで MutationObserver を使用して「location.href」の変更を検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。