cite属性からリンクを生成するユーザーJavaScript(Opera用・改)

cite属性からリンクを生成するユーザーJavaScriptはEnhance blockquote display(UserJS.org)を使っていたのですが、application/xhtml+xmlなサイトでは動かないようなのでvisibleAttribute(工房らくだ舎)を使うことにしました。

メモランダム(http://mynotes.jp/blog/)の記事を整理していたら、「アンカーを文字列にし、a要素によるハイパーリンクがあれば二重にリンクを生成しない」カスタマイズ版を見つけたのでソースを転載しておきます。

(function()
{
  function makeCiteVisible(elementName) {
        var elements = document.getElementsByTagName(elementName);
        var anchors = document.getElementsByTagName('a');
        for(var i = 0,element;element = elements[i];i++) {
          var cite = element.getAttribute('cite');
          var title = element.getAttribute('title');
          var a = document.createElement('a');
          var p = document.createElement('p');
          var duplicate = false;
          if(element.hasAttribute('cite')){
                // cite属性と同じ参照先のアンカーがないかチェック
                for(var j = 0,anchor;anchor = anchors[j];j++){
                  if(anchor.getAttribute('href') == cite && anchor.getAttribute('class') != 'citation') {
                        duplicate = true;
                        break;
                  }
                }
                // 見つけたらループを抜ける
                if(duplicate) break;
                a.setAttribute('href',cite);
                a.setAttribute('class','citation');
                if(elementName == 'blockquote'){
                  if(element.hasAttribute('title')){
                        a.setAttribute('title',title);
                        a.appendChild(document.createTextNode(title));
                  }else{
                        a.appendChild(document.createTextNode(cite));
                  }
                  p.appendChild(a);
                  element.appendChild(p);
                }else if(elementName == 'q'){
                  if(element.hasAttribute('title')){
                        a.setAttribute('title',title);
                  }
                  a.appendChild(document.createTextNode("*"));
                  element.appendChild(a);
                }
          }
        }
  }

  //読み込み時に実行
  document.addEventListener
        ('load',
         function()
        {
          makeCiteVisible("blockquote");
          makeCiteVisible("q");
        },false
        )
})();

リソース情報

URI
http://az-store.nrym.org/note/2008/11/16/46
日付
2008年11月16日
最終更新日
2008年12月22日
カテゴリー
前の記事
opera_exを使わずにMake Link
次の記事
IEが倒せない

案内

カテゴリー
月別アーカイブ
ブログ内検索