inoccoさんが作成されたリンクに新しいウィンドウを開くアイコンを自動で追加するプラグイン
AutoExternalLinkをVicuna用に修正してみた話。

プラグイン添付のjsファイルはLogJETさんが作成されたそうなんですが、

  1. 表示エリアが見つからなかったときにエラーが出るのを直しておきたい。
  2. クラス名を2つ3つ並べて指定するとアイコンが出ないので、それもなんとかしたい。
  3. 今使ってるVicunaではヘッダにリンクを貼るとアイコンが出るので、hn要素以外のaタグに追加したい。
  4. iG:Syntax Hiliterのソースにはアイコン出ないようにしたい。

そのまま使えなかったので変えてみますた。
修正箇所は次の通りです。

1.表示エリアが見つからなかったら華麗にスルー

冒頭のこの部分を

function newWin(){
	if(checkArea == ''){
		var anchors = document.getElementsByTagName('a');
	}else{
		var anchors = document.getElementById(checkArea).getElementsByTagName('a');
	}
	for(i = 0; i < anchors.length; i++){
		var exNum = 0;
		var anchor = anchors&#91;i&#93;;
&#91;/js&#93;

次のようにforの前後で分離して、if(document.getElementById(checkArea))追加でアイコンつけるエリアが見つかったときだけ実行するように変更。

&#91;js&#93;
function newWin(){
	if(checkArea == ''){
		var anchors = document.getElementsByTagName('a');
		addELinks(anchors);
	}else{
		if(document.getElementById(checkArea)){
			var anchors = document.getElementById(checkArea).getElementsByTagName('a');
			addELinks(anchors);
			
		}
	}
}

function addELinks(anchors){
	for(i = 0; i < anchors.length; i++){
&#91;/js&#93;

<h3>クラス名を2つ3つ並べて指定しても対応させる</h3>
inoccoさんのサイトで質問されてるSafariの方、多分これが原因だと思うんだけどどうでしょ。

これは中盤のif文にある

if((ahref.indexOf(eAnchor) == -1 || anchor.className == inclusionClassName) & anchor.href != ''){
exNum++;
}

真ん中の条件を変える。
これでいくつクラスがあっても対応するはず・・・

if((ahref.indexOf(eAnchor) == -1 || anchor.className.indexOf(inclusionClassName) != -1) & anchor.href != ''){
exNum++;
}

hn要素以外のaタグに追加したい

これは完全にVicuna用ですが、色々指定できるので便利っす。

冒頭の条件を

var anchors = document.getElementById(checkArea).getElementsByTagName('a');

prototype.jsのgetElementsBySelector使った条件に変更する

var anchors = $(checkArea).getElementsBySelector("p a","li a","dd a","dl a","blockquote a");

iG:Syntax Hiliterのソースは除外

親切にヘルプへのリンクが付くのがある意味仇に・・・。

これは最初の設定でURL追加する

var exclusionStr = new Array('http://december.com/','http://www.php.net/');

画像ならアイコン出さずに別窓表示

デフォルトだと画像にリンク貼ってあるとアイコンも出ないし別窓にもならない。
else追加すれば画像の場合の条件が作れる。

if(aInner.indexOf(‘スタイリッシュにIEまで直すのが面倒だった。けど自分IE使いじゃないから(・ε・)キニシナイ!!

ついでにPHPのjs呼び出しも、wp_enqueue_script()にしとくと良いかも。