digital 千里眼 @abp_jp

アナログな日常とデジタルの接点

www.aguse.jp のクリック回数を劇的に減らすスクリプト(最新版はクリック不要)

指定した Web ページのセキュリティや SEO 関連情報をまとめて調べるのに便利なサービスで、日本の Adblock Plus 用フィルタ (ABP filters for JP) でも外部(3rd party)広告スクリプト調査で重宝してます

だけど「次の10件を表示」連打は辛い


一気に開きたい...

「次の10件を表示」クリック1回で全件表示するスクリプト

Greasemonkey に以下のスクリプトをインストールして解決

今まで何十回もクリックしないと全部表示されなかった表が1クリックでこの通り

例えば、このブログページを www.aguse.jp で解析 させると...

初期状態 通常の1クリック
(残り13回クリック...orz)
スクリプト適用後の1クリック
スクリプトのソース

やってることは簡単

    1. 件数を取得
    2. それを「次の10件を表示」の onclick に上書き設定

クロス・プラットフォームとかは考慮してません

// ==UserScript==
// @name            Expand www.aguse.jp result with just ONE click
// @namespace       http://d.hatena.ne.jp/k2jp/
// @description     External-connection section is limitted to 10 results by default.
//                  You can click "Next 10 results" button each time to the end.
//                  But this clicking, clicking and clicking... are too boring to death.
//                  This script helps you to open it with just ONE click, by overwriting
//                  default limitation value from 10 to total value.
// @include         http://www.aguse.jp/*
// @author           k2jp
// @version          0.0.1
// ==/UserScript==

(function(){
    window.addEventListener("load", 
        function()
        {   // Excute the following script after the page is loaded.
            var intervalID = setInterval(
                function()
                {   // Overwrite existing onclick script.
                    var n10 = null;     // <img id="next_10" src="http://a002.aguse.jp/image/btn_next10_on.gif" alt="次の10件を表示" onclick="setAllOuterLinks(0,10,'next_10');">
                    var gif = "";       // http://a002.aguse.jp/image/btn_next10_on.gif
                    var outer_cnt = 0;  // Objects with external connecting(Total#)
                    var target_fn = ""; // setAllOuterLinks(0,10,'next_10')
                    if( n10 = document.getElementById("next_10") )
                    {   // If there is "Display next 10 results" button image.
                        if( gif = n10.getAttribute("src") )
                        {   // Check if the button is active.
                            if( -1 == gif.lastIndexOf("_on.") )
                            {   // no more result or no result. Reset interval and exit.
                                clearInterval(intervalID);
                            }else{
                                // Get the total number of result records.
                                outer_cnt = document.getElementById("outercnt");
                                outer_cnt = ~~outer_cnt.innerHTML;
                                if(0 != outer_cnt)
                                {
                                    if( target_fn = n10.getAttribute("onclick") )
                                    {   // Overwrite this "onclick" event.
                                        splited = target_fn.split(",");     // ["setAllOuterLinks(0" , "10" , "'next_10')"]
                                        if(splited[1] == 10)
                                        {   // Overwrite 2nd parameter of setAllOuterLinks function with total number of results.
                                            splited[1] = outer_cnt;
                                        }else{
                                            // Needless to overwrite twice.
                                            clearInterval(intervalID);
                                        }
                                        target_fn = splited.join(",");        // setAllOuterLinks(0,#,'next_10')
                                        n10.setAttribute("onclick", target_fn);
                                    }
                                }
                            }
                        }
                    }
                }
            , 1000);
        }
    , false);
}) ();

インデント深くて格好悪い...orz