waitForElement

Waits for an element using the MutationObserver API

Ezt a szkriptet nem ajánlott közvetlenül telepíteni. Ez egy könyvtár más szkriptek számára, amik tartalmazzák a // @require https://update.greasyfork.org/scripts/528234/1596455/waitForElement.js hivatkozást.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         waitForElement
// @namespace    Violentmonkey Scripts
// @version      2.0
// @description  Waits for an element using the MutationObserver API
// @author       maanimis
// @grant        none
// ==/UserScript==
 
/**
 * Waits for a element of a given selector.
 *
 * @param {string} selector
 * @returns {Promise<HTMLElement>}
 */
 function waitForElement(selector) {
  return new Promise((resolve) => {
    // Ensure <body> is ready
    function ensureBodyReady(callback) {
      if (document.body) return callback();
      requestAnimationFrame(() => ensureBodyReady(callback));
    }

    ensureBodyReady(() => {
      const ELEMENT = document.querySelector(selector);
      if (ELEMENT) return resolve(ELEMENT);

      console.log("can't find element for selector:", selector, "waiting...");

      const observer = new MutationObserver(() => {
        const ELEMENT = document.querySelector(selector);
        if (ELEMENT) {
          console.log("element found!!");
          resolve(ELEMENT);
          observer.disconnect();
        }
      });

      observer.observe(document.body, {
        childList: true,
        subtree: true,
      });
    });
  });
}