Waits for an element using the MutationObserver API
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/528234/1596455/waitForElement.js
// ==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,
});
});
});
}