実際のところ、file:で始まるリンクがあったとしても、どのリンクなのかを示さないと探すのに手間がかかります。そこで、file:で始まるリンクがあった場合にはスタイルシートを操作して赤い枠線で囲んで示すようにします。スタイルシートの操作はstyleオブジェクトの各種プロパティに対して値を設定します。枠線の場合、いくつかプロパティがありますが、全体の枠を一括指定する場合にはborderプロパティにアクセスします。borderプロパティには枠線の色とサイズ、形状を設定します。これら3つの値は文字列として設定します。"3px solid red"とすれば、赤い実線で3ピクセルの枠線になります。

実際のスクリプトが002になります。クリックするとfile:で始まるリンクが赤い枠線で囲まれます。

file:で始まるリンクには赤い太枠が表示される

スクリプト002

function OnClick(){
    // リンクのプロトコルを表示
    var idDocument = Lunascape.GetDocumentID(Lunascape.ActiveIndex);
    var doc = Lunascape.GetDocumentObject(idDocument);
    var aTag = doc.getElementsByTagName("a");
    var count = 0;
    for(var i=0; i<aTag.length; i++){
        if (aTag[i].href.indexOf("file:") > -1){
            count = count + 1;
            aTag[i].style.border = "3px solid red";
        }
    }
    if (count > 0){
        Lunascape.MessageBox("file:で始まるリンクが"+count+"個ありました");
    }else{
        Lunascape.MessageBox("file:で始まるリンクはありませんでした");
    }
}

aタグではfile:やhttp:以外にもmailto:やjavascript:などを使用することができます。このようなプロトコルをリンク文字のかわりに表示するようにすることもできます。リンク内の文字やタグはinnerHTMLプロパティで参照、設定することができます。以下のスクリプトのようにするとリンク部分が【http:】のように置き換えられます。

スクリプト003

function OnClick(){
    // リンクのプロトコルを表示
    var idDocument = Lunascape.GetDocumentID(Lunascape.ActiveIndex);
    var doc = Lunascape.GetDocumentObject(idDocument);
    var aTag = doc.getElementsByTagName("a");
    for(var i=0; i<aTag.length; i++){
        var urls = (aTag[i].href).split(":");
        if (urls.length > 0){
            aTag[i].innerHTML = "【"+urls[0]+"】";
        }
    }
}

処理する前の状態

リンク文字の代わりにhttp:やfile:が表示される

リンク文字すべてが置き換わる