ノードの取得はCSSのセレクタとは勝手が違う
考えてみれば当たり前なんだけど、CSSやjQueryに慣れていたので、最初は戸惑ってしまった。
この前のエントリの続きで、ニコニコ動画のページ下のアフロのおっさん(ページの先頭にスクロールしてくれる人)が無駄に動いてウザかったので(マウスジェスチャもあるし)消しちゃおうってことで…
まず、CSSっぽく
removeNode(document.getElementById('PAGEFOOTER').firstChild);
ってしたけどダメ。この値を調べてみると
[object XPCNativeWrapper [object Text]]
だそうで。は?テキストなんてなくね?と思ってソースを見てみると
<div id="PAGEFOOTER" style="text-align:center;"> }ここに注目 <div style="padding:4px;">
そうです。改行もテキストノードなんです!っていう他愛もない話。
つまり、こうすればおk。
removeNode(document.getElementById('PAGEFOOTER').firstChild.nextSibling);
または、もっとスマートに
removeNode(document.getElementById('PAGEFOOTER').childNodes[1]);
これを付け足す場合は、処理の順序の関係で以下の位置に入れないと、ページによってはおっさんが消えない。
removeNode(document.getElementById('billboard_container')); }この間に入れる var ads1 = document.getElementsByClassName('ads_728');