Ad-Block屏蔽指定网站广告(csdn等)

屏蔽csdn,w3school,runoob,iteye等网站广告

As of 2020-05-28. See the latest version.

// ==UserScript==
// @name         Ad-Block屏蔽指定网站广告(csdn等)
// @description  屏蔽csdn,w3school,runoob,iteye等网站广告
// @namespace    ad_mask
// @version      2.4.3
// @author       vizo
// @require      https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js
// @include      *://*csdn*
// @include      *://*runoob.com/*
// @include      *://*dytt8.net/*
// @include      *://*w3school.com.cn/*
// @include      *://*gitee.com/*
// @run-at       document-start
// @grant        GM_addStyle
// @grant        GM_getResourceText
// @grant        GM_setValue
// @grant        GM_getValue
// @noframes
// ==/UserScript==

let domainAry = [
  {
    name: 'csdn',
    ym: 'blog.csdn.net',
    strict: false,
  },
  {
    name: 'iteye',
    ym: 'iteye.com',
    strict: true,
  },
  {
    name: 'runoob',
    ym: 'runoob.com',
    strict: true,
  },
  {
    name: 'dytt',
    ym: 'dytt8.net',
    strict: true,
  },
  {
    name: 'w3school',
    ym: 'w3school.com.cn',
    strict: true,
  },
  {
    name: 'iconfont',
    ym: 'iconfont.cn',
    strict: true,
  },
  {
    name: 'gitee',
    ym: 'gitee.com',
    strict: true,
  },
]

GM_addStyle(`
  ._adb_csdn iframe,
  ._adb_csdn aside,
  ._adb_csdn #adContent,
  ._adb_csdn div[id^=layer],
  ._adb_csdn div[id*=dmp_ad],
  ._adb_csdn div[id*=kp_box],
  ._adb_csdn div[class*=course_target],
  ._adb_csdn div[class*=type_hot_word],
  ._adb_csdn .recommend-ad-box,
  ._adb_csdn .mediav_ad,
  ._adb_csdn .blog-expert-recommend-box,
  ._adb_csdn .recommend-fixed-box,
  ._adb_csdn .pulllog-box,
  ._adb_csdn .fourth_column,
  ._adb_csdn .login-mark,
  ._adb_csdn .ads,
  ._adb_csdn #passportbox,
  ._adb_csdn .tool-box,
  ._adb_csdn .blog-column-pay,
  ._adb_csdn #writeGuide,
  ._adb_csdn .csdn-side-toolbar,
  
  ._adb_dytt iframe,
  ._adb_dytt body>a,
  ._adb_dytt div[id^=cs_DIV],
  
  ._adb_iteye #layerd,
  ._adb_iconfont #pop_ad,
  
  ._adb_liaoxuefeng #x-sponsor-a,
  ._adb_liaoxuefeng #x-sponsor-b,
  
  ._adb_gitee body > .float-left-box,
  

  
  ._adb_w3school iframe
  
  {display:none !important;}
  
  ._adb_csdn #mainBox > main {
    transform: translateX(-10%);
  }
`)

let timer1s = 0

function throttle(func, wait) {
  let start = 0
  return function() {
    let now = Date.now()
    if (now - start >= wait) {
      func.apply(this, arguments)
      start = now
    }
  }
}

domainAry.forEach(v => {
  let h = location.host
  let m = v.strict ? h === v.ym : h.includes(v.ym)
  if (m) {
    document.documentElement.classList.add('_adb_' + v.name)
    init()
  }
})

function timeout(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

function init() {
  let csdn = $('html').hasClass('_adb_csdn')
  clearTimeout(timer1s);
  let more = $('.btn-readmore')
  
  timer1s = setTimeout(() => {
    if (csdn) {
      if (more.length) {
        more[0].click()
      }
    }
    
    $('html iframe').each(function() {
      $(this).remove()
    })
  }, 500);
}

$(function() {
  function del(ele) {
    $('html')
      .find(ele)
      .remove()
  }
  function empty(ele) {
    $('html')
      .find(ele)
      .parent()
      .empty()
  }

  $(document).on('mousemove', throttle(function() {
    del('.csdn .recommend-ad-box')
    del('body > a')
    del('[id*=cscp]')
    init()
  }, 1000))
})