パスワードを忘れた? アカウント作成
433527 journal
政治

airheadの日記: bookmarklet: コメントへの返信の、表示/非表示ボタン

日記 by airhead
/.のコメントでオフトピックを延々と続けている枝があると、読み手がそれを読み飛ばそうとしても、読み手は延々とスクロールしなければならない。これは時間や表示領域の無駄遣いだし、思考も妨げられる。

/.のHTMLソースをのぞいてみると、あるコメントに付けられていた返信は階層ごとにUL要素でまとめられている(親コメントがなく、記事自体に付けられた最上階層のコメントは除く)。このUL要素に表示/非表示ボタンをつければ便利ではないかと考えた。既に誰か書いているものかもしれないが、web検索で見つかったツリー表示実現スクリプトを参考に、/.用のbookmarkletにしてみた。

すべてのUL要素にボタンをつけるとうっとうしいので、子要素としてTABLE要素を持っているUL要素を対象にした。ボタンの位置が微妙な気もするが、機能的には充分。既にボタンがつけられているかについてはチェックしてないので、実行した数だけボタンが生成されて間抜けだが、まあそれも良しとしよう。仕様。Firefoxで実行させたところボタンが小さくてポイントしにくいので、ボタンのスタイルを指定してちょっと大きめにした。

FirefoxとOperaでは機能したが、IEおよびSleipnirでは機能しない。なんで?

javascript: function toggleSwitch(btn) { btn.value = (btn.value == "-") ? "+" : "-"; btn.nextSibling.style.display = (btn.value == "-") ? "block" : "none"; } for (var i=0; i<document.getElementsByTagName("UL").length; i++) { obj = document.getElementsByTagName("UL")[i]; if (obj.getElementsByTagName("TABLE").length) { btn = document.createElement("INPUT"); btn.type = "button"; btn.value = "-"; btn.onclick = new Function('toggleSwitch(this)'); btn.style.padding = "0em 0.2em"; obj.parentNode.insertBefore(btn,obj); } } focus();

複数行に分けて書くと次のとおり。

javascript:

function toggleSwitch(btn) {
    btn.value = (btn.value == "-") ? "+" : "-";
    btn.nextSibling.style.display = (btn.value == "-") ? "block" : "none";
}

for (var i=0; i<document.getElementsByTagName("UL").length; i++) {
    obj = document.getElementsByTagName("UL")[i];
    if (obj.getElementsByTagName("TABLE").length) {
        btn = document.createElement("INPUT");
        btn.type = "button";
        btn.value = "-";
        btn.onclick = new Function('toggleSwitch(this)');
        btn.style.padding = "0em 0.2em";
        obj.parentNode.insertBefore(btn,obj);
    }
}

focus();
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

普通のやつらの下を行け -- バッドノウハウ専門家

読み込み中...