to reduce repetition in creating scripts for Tampermonkey support
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/23115/156081/Tampermonkey%20Support%20Library.js
var tm = {
addGlobalStyle: function(css) {
var head, style;
head = document.getElementsByTagName('head')[0];
if (!head) { return; }
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
head.appendChild(style);
},
log: function(msg) {
console.log('Tampermonkey: ' + msg);
},
selectText: function (targetClass) {
var textToCopy, range;
try {
if (document.selection) {
range = document.body.createTextRange();
range.moveToElementText(document.getElementsByClassName(targetClass)[0]);
range.select();
} else if (window.getSelection) {
range = document.createRange();
range.selectNode(document.getElementsByClassName(targetClass)[0]);
window.getSelection().addRange(range);
}
} catch (err) {
tm.log('Failed to select text');
}
},
sysFriendly: function(el) {
var text = $(el).text();
$(el).text(text.replace(/\/|\:|\<|\>|\\|\||\*|\?/g, '-'));
},
ping: function (ip, callback) { // via http://jsfiddle.net/GSSCD/203/
if (!this.inUse) {
this.status = 'unchecked';
this.inUse = true;
this.callback = callback;
this.ip = ip;
var _that = this;
this.img = new Image();
this.img.onload = function () {
_that.inUse = false;
_that.callback('responded');
};
this.img.onerror = function (e) {
if (_that.inUse) {
_that.inUse = false;
_that.callback('error', e);
}
};
this.start = new Date().getTime();
this.img.src = "http://" + ip;
this.timer = setTimeout(function () {
if (_that.inUse) {
_that.inUse = false;
_that.callback('timeout');
}
}, 1500);
}
},
isTagIn: function (targetString, tags) {
var isFound = false;
_.each(tags, function scanTarget (tag) {
if (targetString.toLowerCase().indexOf(tag.toLowerCase()) > -1) {
isFound = true;
}
});
return isFound;
},
copyTextToClipboard: function (text) {
var copyFrom = document.createElement("textarea");
copyFrom.textContent = text;
var body = document.getElementsByTagName('body')[0];
body.appendChild(copyFrom);
copyFrom.select();
document.execCommand('copy');
body.removeChild(copyFrom);
},
waitFor: function (options) {
var awaitThis = options.condition,
doThis = options.resolution,
intervalSpeed = options.interval ? options.interval : 100,
maxTries = options.attempts ? options.attempts : 100,
currentTry = 0;
console.log(intervalSpeed + ' | ' + maxTries);
stateLoading = function (awaitCondition) {
if( !awaitCondition ) {
currentTry++;
if (currentTry < maxTries) {
window.setTimeout(stateLoading(awaitCondition), intervalSpeed); /* this checks the flag every intervalSpeed milliseconds*/
} else {
console.log('final try');
}
} else {
console.log('good');
doThis();
}
};
stateLoading(awaitThis);
}
};