m2

CSSルールを一覧表示するブックマークレット

を作った。

改行入れるとこう。

javascript:(function(){
	var d=document;
	var s=d.styleSheets;
	if(s.length==0){
		alert("StyleSheet Not Found.");
		return
	}
	var ht='';
	for(var i=0;i<s.length;i++){
		ht+='<dl><dt>href:'+(s[i].href||'ページ内')+'(media:'+
		    (s[i].media.mediaText||(s[i].media.item)?'':s[i].media)+')</dt>';
		var r=s[i].cssRules||s;
		for(var j=0;j<r.length;j++){
			ht+='<dd>'+r[j].cssText.replace(/}/g,'}<br>')+'</dd>';
		}
		ht+='</dl>';
	}
	var w=open();
	w.document.write('<html><body>'+ht+'</body></html>');
	w.document.close();
})()

Opera、FF,IEで動作。ただしIEでは結構見た目が違う。
あと日本語が表示できない。ヒラギノとか。まあいいか。

Opera9 でマイクロソフトのページが読みづらいからユーザーCSSを書く

上のブックマークレットを書いたのもコレを書くため。(あんま役に立たんかったけれども)
例えば
http://www.microsoft.com/japan/msdn/net/vbnetref/vbnetref3-4.aspx
とか
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemwindowsformscontrolclassdodragdroptopic.asp
が右にはみ出していて読みづらい。
とりあえずそれぞれ CSS を書く。

microsoft.css

@charset "utf-8";
/* microsoft.com */
#pageContainer {
	width : 95% !important;
}

msdn.css

@charset "utf-8";
/* MSDN */
pre.code {
	overflow:scroll;
}

次に Opera を落とした状態で override.ini を編集。profile フォルダに無い場合は「右クリック」→「サイト設定の編集」から作成。
override.ini

[Overrides]
www.microsoft.com
msdn.microsoft.com

[www.microsoft.com]
Author Display Mode|User CSS=1
User Prefs|Local CSS File=/path/to/microsoft.css

[msdn.microsoft.com]
Author Display Mode|User CSS=1
User Prefs|Local CSS File=/path/to/msdn.css

でOKなハズ。
直接編集じゃなくて「右クリック」→「サイト設定の編集」で全部できそうなもんだけど、そうすると「Author Display Mode」が設定されない。不便だ。
「サイト設定の編集」はもっといろいろ設定できるようにして欲しい。特に「CompatMode Override」。

Opera9(.02) は Quirks モードで fixed の offsetTop が取れない

searchResultHilite2.js*1 を使ってる人は Opera9 になって検索ボックスが変な場所に出てきて驚いたんじゃないでしょうか? そーなんだよねー Opera8 は問題ないんだよねー。
んでコレって標準モードだと大丈夫(変なバグだな)なんで、Google を無理やり標準モード(CompatMode Override=2)で表示できれば、searchResultHilite2.js に関してはオッケーかなと思ったらサイト別設定で設定できない。つーか「CompatMode Override」なんてサイト別設定でしか使わんだろ。なんでできないんだか。
しょうがないので searchResultHilite2.js をちょっと修正。少しズレるから違和感あるけど、使えないよりはいいかな。

searchResultHilite2.js(579行目から)

		//obj.deltaX = e.clientX - x;
		//obj.deltaY = e.clientY - y;
		obj.deltaX = 55;
		obj.deltaY = 15;