H::K on anond

    @@ -1,9 +1,34 @@ /* - * @title 匿名ダイアリーのキーワードのアレ - * @description 匿名ダイアリーのキーワードへのリンクが使いにくいんじゃ - * @include http://anond.hatelabo.jp/ + * @title H::K on anond + * @description replace link to Hatena Keyword on AnonymousDiary w/ Pager Extentions + * @include http://anond.hatelabo.jp/* + * @contributor azyobuzin http://let.hatelabo.jp/azyobuzin/let/hLHWqbmliOYD (Fork of) * @license MIT License - * @require + * @javascript_url */ -document.getElementsByClassName("keyword").forEach(function(value) { value.host = "d.hatena.ne.jp"; }) +(function() { + var forEach = Array.prototype.forEach; + + var replaceLinks = function(context) { + forEach.call(context.querySelectorAll("a.keyword"), function(value) { + value.host = "d.hatena.ne.jp"; + }); + }; + replaceLinks(document); + + // c.f. + // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver + // http://blog.gutyan.jp/entry/2014/09/06/MutationObserver + var MutationObserver = window.MutationObserver || + window.WebkitMutationObserver; // webkit-* e.g. Safari 6 + var observer = new MutationObserver(function callbackhell(mutations) { + mutations.forEach(function(mutation) { + forEach.call(mutation.addedNodes, function(node) { + replaceLinks(node); + }); + }); + }); + // IDKWTD filter by selector(not attributeFilter) e.g. "a.keyword" + observer.observe(document, { childList: true, subtree: true }); +}());
  • /*
     * @title H::K on anond
     * @description replace link to Hatena Keyword on AnonymousDiary w/ Pager Extentions
     * @include http://anond.hatelabo.jp/*
     * @contributor azyobuzin   http://let.hatelabo.jp/azyobuzin/let/hLHWqbmliOYD (Fork of)
     * @license MIT License
     * @javascript_url
     */
    
    (function() {
        var forEach = Array.prototype.forEach;
    
        var replaceLinks = function(context) {
            forEach.call(context.querySelectorAll("a.keyword"), function(value) {
                value.host = "d.hatena.ne.jp";
            });
        };
        replaceLinks(document);
    
        // c.f.
        // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
        // http://blog.gutyan.jp/entry/2014/09/06/MutationObserver
        var MutationObserver = window.MutationObserver ||
            window.WebkitMutationObserver; // webkit-* e.g. Safari 6
        var observer = new MutationObserver(function callbackhell(mutations) {
            mutations.forEach(function(mutation) {
                forEach.call(mutation.addedNodes, function(node) {
                    replaceLinks(node);
                });
            });
        });
        // IDKWTD filter by selector(not attributeFilter) e.g. "a.keyword"
        observer.observe(document, { childList: true, subtree: true });
    }());
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2014/10/27 02:30:54 - 2014-10-27
  2. 2014/10/27 02:21:38 - 2014-10-27
  3. 2014/10/27 02:08:45 - 2014-10-27