«前の日記(2003年02月26日) 最新 次の日記(2003年03月01日)» 編集

混沌の庭研究所

1998|06|07|08|09|10|11|12|
1999|03|04|05|06|07|08|09|10|11|12|
2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|06|07|08|09|10|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|05|06|07|08|10|11|12|
2011|01|03|09|
2012|02|03|
2013|05|12|
2019|10|

2003年02月27日 木曜日 [長年日記]

_ [JavaScript] Bookmarkletその4

Mozilla用ブックマークレット、懲りずにまだまだやるよー。

ime.nu消去からさらに一歩進んで、ttpから始まるURLを直リンクにしてしまおうといろいろ考えてミタ。

javascript:
var L = document.links;
for (i = 0;i < L.length; i++) {
	L[i].setAttribute('href',L[i].href.replace('ime.nu/',''));
	L[i].setAttribute('href',L[i].href.replace('pinktower.com/',''));
}
var RES = document.getElementsByTagName('dd');
for (i = 0; i < RES.length; i++) {
	var temp = document.createElement('div');
	var COM = RES[i].childNodes;
	for (j = 0; j < COM.length; j = j) {
		if (/^ttp/.test(COM[0].nodeValue)) {
			COM[0].nodeValue = COM[0].nodeValue.replace(/^ttp/, 'http');
			var x = document.createElement('a');
			var txt = document.createTextNode(COM[0].nodeValue);
			x.appendChild(txt);
			x.setAttribute('href',COM[0].nodeValue);
			temp.appendChild(x);
			RES[i].removeChild(RES[i].childNodes[0]);
		} else {
			temp.appendChild(COM[0]);
		}
	}
	RES[i].appendChild(temp);
}
COM[j].nodeValue='';

2chスレ用URL直リンク化

上の「2chスレ用URL直リンク化」のリンクを右クリックでブックマーク登録してクダサイ。昨日と同様、まずはリンクからime.nu/、pinktower.com/を削った後でdd要素の子nodeを順次チェックしていきます。この時、nodeValueがttpから始まっていなければ、テンポラリ用に作ったdiv要素の子nodeとして移動します。ttpから始まっていれば、a要素を作ってやってからテンポラリのdiv要素の子nodeに追加します。……ちゅーか、この操作がコピーではなく移動になってしまうのがよくわからんかった。とりあえずは、そういうものなんだと考えておこう。dd要素の子nodeを全てチェックし終えたら、最後にdiv要素をdd要素の子nodeとして追加してやります。……この辺り、もうちっとなんとかできないものか。

ところで、このスクリプトだとURLの後ろにbr要素なしで直接文字が続いていた場合はうまくいかないのですよね。

もひとつ、今度はちとインタラクティブ(ぉ なスクリプトを。

javascript:
E = prompt('要素を指定','');
S = prompt('スタイルを設定','');
Es = document.getElementsByTagName(E);
for (i = 0; i < Es.length; i++) {
	Es[i].setAttribute('style',S);
}

要素スタイル変更

これは、タグ名で要素を指定してstyle属性を追加するブックマークレット。最初のダイアログでタグ名を入れて(例えば画像なら「img」)、次のダイアログで追加するスタイルを指定。例えば「display:none」とやれば、ブックマークレット適用ページに表示されていた画像がすべて消え去ります。「border:1px solid red」とやれば、1ピクセルの赤線の枠が付きます。……CSSがわからないと何のことだかわかりませんな。

それにしてもまあ、こういう暇人な作業ってどうしてこんなに楽しいのであろうか。