2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dots.の特定のタグを非表示にするユーザースクリプト

Last updated at Posted at 2016-07-15

概要

私は、超非効率なのですが、dots.で数日に一度、大阪の新着イベントを確認しています。1
大阪府のIT勉強会・セミナー・イベント情報 - dots. ドッツ

ただ、イベントの中には「精力的に活動してらっしゃるが、おそらく今後もご縁はないだろうな」という登録がちらほらあります。2
しかし、dots.のイベント検索は、自分が知る限り、非ログインではマイナス検索できません。
不要なものは選別作業や目滑りなどが発生するので、できるだけ見たくありませんでした。
なので、非表示にしました。

動作確認環境

  • Windows7
  • Firefox49
  • Greasemonkey
  • dots.非ログイン

コード

昔作ったものなのでES6を少し。Chromeではそのまま使えないかもしれません。

dots._Hide_specific_tag.user.js

dots._Hide_specific_tag.user.js

// ==UserScript==
// @name        Hide specific tag
// @namespace   khsk
// @description 特定のタグを持つイベントを非表示にする
// @include     http://eventdots.jp/event/search*
// @version     1
// @grant       none
// ==/UserScript==

var ignoreTags = ['非表示にしたいタグ']

var isHideTag = nodes => {
  var hide = false
  Array.prototype.forEach.call(nodes.children, tag => {
    if (hide) {
      // breeakはできないので、一度trueになったら早期continue
      // ↓のifに!hide && でもいいけど(今の形は意味がうすそう)
      return;
    }
    if (ignoreTags.indexOf(tag.innerText) !== -1) {
      hide = true
    }

  })
  return hide
}

var getEvetnsConsiderOffset = className => {
  events = document.getElementsByClassName(className)
  // 既存のイベントまで取得するので、返すのは常に最後の15件=追加読み込み分(Arrayになる)
  return Array.prototype.slice.call(events, -15)
}

var hideEvents = events => {
  Array.prototype.forEach.call(events, event => { 
    // タグなしイベントに対応
    if (event.style.display !== 'none' && !!event.getElementsByClassName('tags')[0] && isHideTag(event.getElementsByClassName('tags')[0])) {
      event.style.display = 'none'
    }
   })
}

var mo = new MutationObserver((data1, data2) => {
  var events = getEvetnsConsiderOffset('eventlist clearFix')
  hideEvents(events)
})
var list = document.getElementsByClassName('col-full')[0]
mo.observe(list, {childList: true, subtree:true})

// 初期表示分に適用
var events = getEvetnsConsiderOffset('eventlist clearFix')
hideEvents(events)



  1. 最近、トップから都道府県を選択できなくなり悲しいですが。

  2. 理由は開催地だったり興味だったり有料だったりいろいろなのです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?