您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
要素がDOMに出現するまで待つユーティリティです。
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/443087/1038171/wait-for-selector.js
- // ==UserScript==
- // @name wait-for-selector
- // @namespace http://tampermonkey.net/
- // @version 1.0.0
- // @license MIT
- // @description 要素がDOMに出現するまで待つユーティリティです。
- // @author You
- // @grant none
- // ==/UserScript==
- 'use strict'
- /**
- * @param {string} selectors
- * @param {number} [timeout=Infinity]
- * @param {ParentNode} [context=document.body]
- * @returns {Promise<Element>}
- */
- const waitForSelector = (selectors, timeout = Infinity, context = document.body) => {
- const element = context.querySelector(selectors)
- if (element) {
- return Promise.resolve(element)
- }
- return new Promise((resolve, reject) => {
- const observer = new MutationObserver(records => {
- for (const { addedNodes } of records) {
- if (!addedNodes.length) {
- continue
- }
- const element = context.querySelector(selectors)
- if (!element) {
- continue
- }
- observer.disconnect()
- resolve(element)
- }
- })
- observer.observe(context, {
- childList: true,
- subtree: true
- })
- if (Number.isFinite(timeout)) {
- setTimeout(() => {
- observer.disconnect()
- reject(new Error('Element not found'))
- }, timeout)
- }
- })
- }
- unsafeWindow.waitForSelector = waitForSelector