ignore-not-cc-photo.user.js
実際は消すんじゃなくて半透明にします。適用先は他の人の写真一覧のページ (/photo/username/)
以下スクリプトの説明
実は Set があるときとないときとで構造化の度合いみたいなのが違っててややこしい。具体的には Set がない人の一覧では div.StreamView
一個に対し、一つの写真と写真の情報が含まれる望ましい構造であるのに対し、Set がある人の一覧では、写真一覧が全部 div.StreamView
一個に含まれている。
ということで、Set がある場合とない場合にわけてる。きもいー。
Set がある場合、div.StreamView
以下の要素を一旦構造化する。
DocumentFragment
を作っておく。 div.StreamView
以下列挙してループ h4
がでてきたら div (class="__GM_Photo") という要素を作る - 他の要素だったら
div.__GM_Photo
に appendChild
(一旦ノードは削除される) - また
h4
がでてきたら DocumentFragment
に突っ込む - ループ終わったら残ってる
div.__GM_Photo
も DocumentFragment
に突っ込む div.StreamView
に DocumentFragment
を appendChild
(戻す)
DocumentFragment
は DOM における無名ノードみたいなもの。名前そのまんまだけど!!!
appenChild
は既に同じドキュメントにあるノードを追加するとき、一旦そのノードを取り除く。すなわち移動したいときはいちいち削除する必要はない。逆にコピーしたいときは cloneNode
する必要がある。
そいでもって、Set がない場合は div.StreamView
のクラス名に __GM_Photo を追加するだけしとく。
あとは、Set のあるなしに関わらず、CC の画像を含んでいない div.__GM_Photo
にアレしてコレした的な何か。
- トップ
-
js
-
flickr で CC じゃない写真を消す GM スクリプト
- トップ
-
gm
-
flickr で CC じゃない写真を消す GM スクリプト