散財.com用Greasemonkeyスクリプト(修正版)
散財.comのホームで、広告の数が多くありやがったために削除しきれていなかった不具合を修正した。
// ==UserScript== // @name 3zai // @namespace null // @description null // @include http*://www.3zai.com/* // @exclude null // ==/UserScript== (function() { //delete ads & velisign var ads = document.getElementsByClassName('banner'); while (ads.length) { removeNode(ads[0]); } removeNode(document.getElementById('secured')); //scrolling if (!location.hash) { window.scrollTo(0, document.getElementById('global-navi').offsetTop - 3); } //functions function getElementsByClassName(name) { var elements = []; var allElements = document.getElementsByTagName('*'); for (var i = 0, l = allElements.length; i < l; i++) { if (allElements[i].className == name) { elements.push(allElements[i]); } } return elements; } function removeNode(targetNode) { return targetNode.parentNode.removeChild(targetNode); } })();
ただし、ループの部分でfor
を使うとうまくいかない。いくつか削除できずに残ってしまう。
for (var i = 0, l = ads1.length; i < l; i++) { removeNode(ads1[i]); }
で、for
で駄目ならwhile
だーってやったらなぜだか知らないけどうまくいった。うーん、removeChild
あたりが怪しいぞと思ってググってみたら、同じ境遇の人を発見した。
なるほどねー。てゆーか、そもそもノードリストは配列とは違うのか…。
追記|2008.07.11
id:javascripterさんの助言をもとに修正。