t.um block
by
noromanba
2016-02-12 [2016/02/12 05:20:12]
detox t.umblr.com link on tumblr.com
-
/*
* @title t.um block
* @description detox t.umblr.com link on tumblr.com
* @include *://*.tumblr.com/*
* @license CC0 Univ PD https://creativecommons.org/publicdomain/zero/1.0/legalcode
* @javascript_url
*/
// UserScript
// https://gist.github.com/noromanba/76a3d7791cf6eaf1c94c
// c.f.
// http://ptech.g.hatena.ne.jp/noromanba/20160208/1454965267
// https://stackoverflow.com/questions/35023389/tumblr-injecting-new-code-into-my-links
// e.g.
// http://yahoo.tumblr.com
(() => {
'use strict';
const detox = (ctx) => {
if (!ctx.querySelectorAll) return;
Array.from(ctx.querySelectorAll([
'a[href^="http://t.umblr.com/redirect?z="]',
'area[href^="http://t.umblr.com/redirect?z="]'
//'[src^="http://t.umblr.com/redirect?z="]'
]), link => {
// redirector syntax;
// http://t.umblr.com/redirect?z=<ENCODED_URL>&t=<66_DIGIT_HASH>%3D%3D
const url = (new URL(link.href).search.match(/(?:\?|&)z=([^&]+)/) || [])[1];
link.href = decodeURIComponent(url);
});
};
detox(document.body);
new MutationObserver(records => {
records.forEach(record => {
detox(record.target);
});
}).observe(document.body, { childList: true, subtree: true });
})();
// DBG
/*
Array.from(document.querySelectorAll([
'[href^="http://t.umblr.com/redirect?z="]',
'[src^="http://t.umblr.com/redirect?z="]'
]), link => link.tagName ).filter((val, idx, ary) => {
return ary.indexOf(val) === idx;
});
*/
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。