uso reader
by
noromanba
2014-11-04 [2014/11/04 07:15:15]
replace Userscripts.org to readonly-mirror
@@ -26,7 +26,7 @@
// https://gist.github.com/noromanba/2669793
// http://javascript.g.hatena.ne.jp/edvakf/20100204/1265312155
var forEach = Array.prototype.forEach,
- timer, queue = [], interval = 100,
+ timer, queue = [], interval = 10,
ELEMENT_NODE = document.ELEMENT_NODE, DOCUMENT_NODE = document.DOCUMENT_NODE;
var toMirror = function (context) {
queue.push(context);
/*
* @title uso reader
* @description replace Userscripts.org to readonly-mirror
* @inclide http://*
* @inclide https://*
* @license MIT http://opensource.org/licenses/MIT
* @javascript_url
*/
// e.g. show my uso
// http://noromanba.flavors.me
// https://userscripts.org/users/436459/scripts
// http://userscripts.org:8080/users/436459/scripts
// c.f. smilar script
// https://greasyfork.org/scripts/2222-uso-mirror/code
// for readonly use; script install are unsafe
(function () {
var HOST = [
'userscripts-mirror.org',
'www.webextender.net'
].shift();
// c.f. debouncing w/ queue
// https://gist.github.com/noromanba/2669793
// http://javascript.g.hatena.ne.jp/edvakf/20100204/1265312155
var forEach = Array.prototype.forEach,
timer, queue = [], interval = 10,
ELEMENT_NODE = document.ELEMENT_NODE, DOCUMENT_NODE = document.DOCUMENT_NODE;
var toMirror = function (context) {
queue.push(context);
clearTimeout(timer);
timer = setTimeout(function () {
forEach.call(queue, function (node) {
if (node.nodeType !== ELEMENT_NODE && node.nodeType !== DOCUMENT_NODE) return;
// TBD avoid cache sites; e.g. wayback, archive.today et al.
forEach.call(node.querySelectorAll('a[href*="://userscripts.org"]'), function (link, idx) {
setTimeout(function () {
link.protocol = 'http';
link.hostname = HOST;
link.port = 80; // readonly mode when uso killing; "http://userscript.org:8080/..."
}, idx * interval);
});
});
queue = [];
});
};
toMirror(document);
// TBD MutationObserver or click binding
document.body.addEventListener('DOMNodeInserted', function (evt) {
toMirror(evt.target);
});
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。