Hatena::ブログ(Diary)

Higé au lait

2010年10月15日

delicious netowrok の既読リンクは表示しない

// ==UserScript==
// @include http://www.delicious.com/network/*
// ==/UserScript==

(function() {
	var style = document.createElement("style");
	document.getElementsByTagName("head")[0].appendChild(style);
	var sheet = style.sheet;
	sheet.insertRule("a:visited { font-weight: 800 }", sheet.cssRules.length);

	var posts = document.querySelectorAll("li.post");
	for(var i = posts.length; i;) {
		var post = posts[--i]
		var postlink = post.querySelector("a.taggedlink")
		if(window.getComputedStyle(postlink, "").fontWeight == 800) {
			post.style.display = "none";
		}
	}
})();

Opera 10.63 動作確認.

参考

できあがるまで

Network に並ぶページはすべて目新いものではない.さっき見たページもたくさん並んでいる.そんなページへのリンクは消してしまおう.

a:visited を JavaScript でいじれるのをどっかで見た気がする.

ふむ,スタイルをつけてそれをよみとればいいわけだな.

どういうスタイルにするかはどうせ消える要素なんだからどうでもいいわけで,参考サイトの font-weight を採用.

はじめは ユーザCSS を適応させてそれを ユーザJS で操作するという方法をとった.

ここで最初のつまづき

"element.style.fontWeight" だとユーザCSSで変更した値を取得できない.というわけで初めてgetComputedStyle を使ってみる.これで一応完成.

さらに思う.どうせなら ユーザJSだけで完結させたい.

で stylesheet.insertRule.これも初めて使う.

で,完成.

と思いきや @include が聞いていないのかいかなるページでも動いてしまう.なぜ?未解決.

Greasemonkey でも動かしてみたが問題なし.ほかのスクリプトはまともに動いているのに???