広告を削除するニコニコ動画用Greasemonkeyスクリプト - (ββ)対応版

微妙に変わった(公式カテゴリがなくなった)ので(秋)対応版を修正した。機能は変わらない。
詳細情報・メニューを表示したり、タグを編集しても、プレイヤーの位置がズレないようにするスクリプトも一緒に使うと快適♪

機能

  • ニコニコ市場を除く広告を全て削除する
  • 動画ページではプレイヤーまでスクロールする
  • 履歴項目をセンタリングする
  • ページの先頭へ戻るリンクを(ウザいので)削除する

スクリプト

// ==UserScript==
// @name nicoAdsEraser+Scroller_doubleBeta
// @namespace null
// @description Script for erasing ads mainly and scrolling to moive section 
// @include http://www.nicovideo.jp/*
// @exclude null
// ==/UserScript==

(function () {
  // フッタにいる謎の生物?を削除
  removeNode(document.getElementById('PAGEFOOTER').childNodes[1]);

  // ロゴ左の広告
  if (document.getElementById('web_pc_uneune')) {
    removeNode(document.getElementById('web_pc_uneune').parentNode);
  }

  // トップページ
  if (location.pathname.search(/\/$/) == 0) {
    eraser1();
    eraser2();
    eraser3();

    onclickPlus();

  // 動画ページ
  } else if (location.pathname.search(/^\/watch/) == 0) {
    var div = document.getElementById('PAGEHEADER').getElementsByTagName('div');
    for (var i = 0, l = div.length; i < l; i++) {
      if (div[i].id.search(/^web_pc_watch/) == 0) {
        removeNode(div[i].parentNode.parentNode.parentNode.parentNode);
      }
    }
    
    if (document.getElementsByClassName('ads_tag')[0]) {
      removeNode(document.getElementsByClassName('ads_tag')[0]);
    }

    if (document.getElementsByClassName('mb16p4')[0]) {
      removeNode(document.getElementsByClassName('mb16p4')[0]);
    }

    removeNode(document.getElementById('WATCHHEADER').getElementsByClassName('TXT12')[0]);
		
    // スクロール
    window.scrollTo(0, document.getElementById('WATCHHEADER').offsetTop);

  // タグ検索ページ
  } else if (location.pathname.search(/^\/tag/) == 0) {
    eraser1();
    eraser2();
    eraser3();

    removeNode(document.getElementsByClassName('mb16p4')[document.getElementsByClassName('mb16p4').length - 1]);	

  // 視聴履歴ページ
  } else if (location.pathname.search(/^\/history/) == 0) {
    eraser1();
    removeNode(document.getElementById('web_pc_branding').parentNode.parentNode);

    // センタリング
    document.getElementById('PAGEBODY').childNodes[3].childNodes[1].childNodes[0].childNodes[1].childNodes[3].style.marginLeft = '120px';

  // その他のページ
  } else {
    eraser1();
    eraser2();
    eraser3();		
  }

// 関数
  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 $A(list) {
    var array = [];
    for(var i = 0, l = list.length; i < l; i++) {
      array.push(list[i]);
    }
    return array;
  }

  function removeNode(targetNode) {
    return targetNode.parentNode.removeChild(targetNode);
  }

  function eraser1() {
    removeNode(document.getElementById('web_pc_top').parentNode);
  }

  function eraser2() {
    removeNode(document.getElementById('web_pc_branding').parentNode);
  }

  function eraser3() {
    var allElements = $A(document.getElementsByTagName('*'));
    for (var i = 0, l = allElements.length; i < l; i++) {
      if (allElements[i].id.search(/^web_pc_categorygroup/) == 0) {
        removeNode(allElements[i].parentNode);
      }
      if (allElements[i].id.search(/^web_pc_megatext/) == 0) {
        removeNode(allElements[i]);
      }
    }
    if (document.getElementById('web_pc_hide') != null) {
      removeNode(document.getElementById('web_pc_hide').parentNode.parentNode);
    }
    if (document.getElementById('web_pc_hide_tpl') != null) {
      removeNode(document.getElementById('web_pc_hide_tpl'));
    }
  }

  function onclickPlus() {
    var tag = $A(document.getElementsByClassName('tag_b1'));
    for (var i = 0, l = tag.length; i < l; i++) {
      var newFunc = 'eraser3();' + 'onclickPlus();' + tag[i].getAttribute('onclick');
      tag[i].setAttribute('onclick', newFunc);
    }
  }
})();