Greasy Fork is available in English.
Permet de se déclencher à l'arrivée d'un élément sur une page.
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/394721/763614/w84Kel.js
// ==UserScript==
// @name w84Kel
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Permet de se déclencher à l'arrivée d'un élément sur une page.
// @author CoStiC
// @include *://*/*
// @grant none
// ==/UserScript==
'use strict';
/*--- waitForKeyElements(): A utility function, for Greasemonkey scripts,
that detects and handles AJAXed content. Forked for use without JQuery.
Usage example:
waitForKeyElements (
"div.comments"
, commentCallbackFunction
);
//--- Page-specific function to do what we want when the node is found.
function commentCallbackFunction (element) {
element.text ("This comment changed by waitForKeyElements().");
}
IMPORTANT: Without JQuery, this fork does not look into the content of
iframes.
*/
function waitForKeyElements(
selectorTxt, /* Required: The selector string that specifies the desired element(s). */
actionFunction, /* Required: The code to run when elements are found. It is passed a jNode to the matched element. */
bWaitOnce /* Optional: If false, will continue to scan for new elements even after the first match is found. */
) {
var targetNodes, btargetsFound;
targetNodes = document.querySelectorAll(selectorTxt);
if (targetNodes && targetNodes.length > 0) {
btargetsFound = true;
/*--- Found target node(s). Go through each and act if they are new.*/
targetNodes.forEach(function (element) {
var alreadyFound = element.dataset.found == 'alreadyFound' ? 'alreadyFound' : false;
if (!alreadyFound) {
//--- Call the payload function.
var cancelFound = actionFunction(element);
if (cancelFound) btargetsFound = false;
else element.dataset.found = 'alreadyFound';
}
});
} else {
btargetsFound = false;
}
//--- Get the timer-control variable for this selector.
var controlObj = waitForKeyElements.controlObj || {};
var controlKey = selectorTxt.replace(/[^\w]/g, "_");
var timeControl = controlObj[controlKey];
//--- Now set or clear the timer as appropriate.
if (btargetsFound && bWaitOnce && timeControl) {
//--- The only condition where we need to clear the timer.
clearInterval(timeControl);
delete controlObj[controlKey];
} else {
//--- Set a timer, if needed.
if (!timeControl) {
timeControl = setInterval(function () {
waitForKeyElements(selectorTxt,
actionFunction,
bWaitOnce
);
},
300
);
controlObj[controlKey] = timeControl;
}
}
waitForKeyElements.controlObj = controlObj;
}