first commit
This commit is contained in:
commit
00bb89af1d
2 changed files with 166 additions and 0 deletions
84
jquery-version.js
vendored
Normal file
84
jquery-version.js
vendored
Normal file
|
@ -0,0 +1,84 @@
|
|||
/*--- waitForKeyElements(): A utility function, for Greasemonkey scripts,
|
||||
that detects and handles AJAXed content.
|
||||
|
||||
Usage example:
|
||||
|
||||
waitForKeyElements (
|
||||
"div.comments"
|
||||
, commentCallbackFunction
|
||||
);
|
||||
|
||||
//--- Page-specific function to do what we want when the node is found.
|
||||
function commentCallbackFunction (jNode) {
|
||||
jNode.text ("This comment changed by waitForKeyElements().");
|
||||
}
|
||||
|
||||
IMPORTANT: This function requires your script to have loaded jQuery.
|
||||
*/
|
||||
function waitForKeyElements(
|
||||
selectorTxt /* Required: The jQuery 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.
|
||||
*/,
|
||||
iframeSelector /* Optional: If set, identifies the iframe to
|
||||
search.
|
||||
*/
|
||||
) {
|
||||
var targetNodes, btargetsFound;
|
||||
|
||||
if (typeof iframeSelector == "undefined") targetNodes = $(selectorTxt);
|
||||
else targetNodes = $(iframeSelector).contents().find(selectorTxt);
|
||||
|
||||
if (targetNodes && targetNodes.length > 0) {
|
||||
btargetsFound = true;
|
||||
/*--- Found target node(s). Go through each and act if they
|
||||
are new.
|
||||
*/
|
||||
targetNodes.each(function () {
|
||||
var jThis = $(this);
|
||||
var alreadyFound = jThis.data("alreadyFound") || false;
|
||||
|
||||
if (!alreadyFound) {
|
||||
//--- Call the payload function.
|
||||
var cancelFound = actionFunction(jThis);
|
||||
if (cancelFound) btargetsFound = false;
|
||||
else jThis.data("alreadyFound", true);
|
||||
}
|
||||
});
|
||||
} 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,
|
||||
iframeSelector
|
||||
);
|
||||
}, 300);
|
||||
controlObj[controlKey] = timeControl;
|
||||
}
|
||||
}
|
||||
waitForKeyElements.controlObj = controlObj;
|
||||
}
|
82
waitForKeyElements.js
Normal file
82
waitForKeyElements.js
Normal file
|
@ -0,0 +1,82 @@
|
|||
/*--- waitForKeyElements(): A utility function, for Greasemonkey scripts,
|
||||
that detects and handles AJAXed content.
|
||||
|
||||
Usage example:
|
||||
|
||||
waitForKeyElements (
|
||||
"div.comments"
|
||||
, commentCallbackFunction
|
||||
);
|
||||
|
||||
//--- Page-specific function to do what we want when the node is found.
|
||||
function commentCallbackFunction (jNode) {
|
||||
jNode.text ("This comment changed by waitForKeyElements().");
|
||||
}
|
||||
|
||||
IMPORTANT: This function requires your script to have loaded jQuery.
|
||||
*/
|
||||
function waitForKeyElements(
|
||||
selectorTxt /* Required: The jQuery 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.
|
||||
*/,
|
||||
iframeSelector /* Optional: If set, identifies the iframe to
|
||||
search.
|
||||
*/
|
||||
) {
|
||||
let targetNodes, btargetsFound;
|
||||
|
||||
if (typeof iframeSelector == "undefined") targetNodes = selectorTxt;
|
||||
else targetNodes = iframeSelector.contents().find(selectorTxt);
|
||||
|
||||
if (targetNodes && targetNodes.length > 0) {
|
||||
btargetsFound = true;
|
||||
/*--- Found target node(s). Go through each and act if they
|
||||
are new.
|
||||
*/
|
||||
targetNodes.each(function () {
|
||||
let jThis = this;
|
||||
let alreadyFound = jThis.data("alreadyFound") || false;
|
||||
|
||||
if (!alreadyFound) {
|
||||
//--- Call the payload function.
|
||||
let cancelFound = actionFunction(jThis);
|
||||
if (cancelFound) btargetsFound = false;
|
||||
else jThis.data("alreadyFound", true);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
btargetsFound = false;
|
||||
}
|
||||
//--- Get the timer-control variable for this selector.
|
||||
let controlObj = waitForKeyElements.controlObj || {};
|
||||
let controlKey = selectorTxt.replace(/[^\w]/g, "_");
|
||||
let timeControl = controlObj[controlKey];
|
||||
|
||||
//--- Now set or clear the timer as appropriate.
|
||||
if (btargetsFound && bWaitOnce && timeControl) {
|
||||
clearInterval(timeControl);
|
||||
delete controlObj[controlKey];
|
||||
} else {
|
||||
//--- Set a timer, if needed.
|
||||
if (!timeControl) {
|
||||
timeControl = setInterval(function () {
|
||||
waitForKeyElements(
|
||||
selectorTxt,
|
||||
actionFunction,
|
||||
bWaitOnce,
|
||||
iframeSelector
|
||||
);
|
||||
}, 300);
|
||||
controlObj[controlKey] = timeControl;
|
||||
}
|
||||
}
|
||||
waitForKeyElements.controlObj = controlObj;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue