t.um block Fork

  • /*
     * @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 です。

History

  1. 2016/02/11 20:20:12 - 2016-02-11
  2. 2016/02/11 20:00:14 - 2016-02-11
  3. 2016/02/11 19:58:48 - 2016-02-11
  4. 2016/02/09 22:14:20 - 2016-02-09
  5. 2016/02/08 22:07:47 - 2016-02-08
  6. 2016/02/08 21:58:31 - 2016-02-08
  7. 2016/02/08 21:16:43 - 2016-02-08
  8. 2016/02/08 19:56:04 - 2016-02-08
  9. 2016/02/08 19:55:05 - 2016-02-08
  10. 2016/02/08 19:42:41 - 2016-02-08