[WP]AutoExternalLinkプラグイン修正

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

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

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

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

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

冒頭のこの部分を

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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文にある
[js]
if((ahref.indexOf(eAnchor) == -1 || anchor.className == inclusionClassName) & anchor.href != ''){
exNum++;
}

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

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

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

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

冒頭の条件を

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

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

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

iG:Syntax Hiliterのソースは除外

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

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

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

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

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

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

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

「[WP]AutoExternalLinkプラグイン修正」への4件のフィードバック

  1. こんばんは。

    AutoExternalLink.jsのjQuery版の移植は難しいでしょうか?
    是非、jQuery版のAutoExternalLink.jsをお願いします。
    よろしくお願いします。

    返信
  2. オリジナルでprototype使ってるのは、javascriptファイル末尾にあるイベント処理だけみたいなので、
    そこと上の「hn要素以外のaタグに追加したい」をjQuery用に変更すればできると思います。

    自分はカスタムしてるだけなので、ファイルそのものの配布はしませんが・・・
    出来たら手順公開しますー。

    返信
  3. お返事ありがとうございます。
    手順の公開を楽しみにしています。

    有用な情報ばかりで毎回参考にさせて頂いています。

    返信

コメントを残す

This site uses Akismet to reduce spam. Learn how your comment data is processed.