userChromeでMakeLink(CopyUrlLitePlus.uc.jsの改造)

userChromeJSでMakeLinkをする方法はいくつかあるだろうが、
CopyUrlLitePlus.uc.jsを利用させて頂きました。


アンカータグ(Aタグ)を簡単に作ることが可能。
CopyUrlLitePlus.uc.js - Code-404


しかし、問題点があった。
リンク上で右クリックしてリンク先のアンカーを作りたかったが
リンク先のURLは取得できるものの、タイトル(リンク文字列)が取れない



そこでリンク文字列を取得できるようにちょっと改造した。

改造手順・・・2ステップ

およそ250行?付近の

function convertText

の下にいくつか手を加える。



1)1カ所目

      if(gContextMenu.onLink){
        text = text.replace(/%RLINK_HTMLIFIED%/g, link_html);
        text = text.replace(/%RLINK%/g, link);
      }

の2行を消し、

      if(gContextMenu.onLink){
//変更ここから      
//        text = text.replace(/%RLINK_HTMLIFIED%/g, link_html);
//        text = text.replace(/%RLINK%/g, link);
          text = text.replace(/%LINK_URL_HTMLIFIED%/g, linkUriHtml);
          text = text.replace(/%LINK_URL%/g, linkUri);
          text = text.replace(/%LINK_TITLE_HTMLIFIED%/g, linkTitleHtml);
          text = text.replace(/%LINK_TITLE%/g, linkTitle);
//ここまで
      }

に書き換える。


2)2カ所目

    if(gContextMenu.onLink){
      var link = gContextMenu.getLinkURL().toString();
      var link_html = htmlEscape(link);
    }

    if(gContextMenu.onLink){
//変更ここから    
//      var link = gContextMenu.getLinkURL().toString();
//      var link_html = htmlEscape(link);
        var linkUri = gContextMenu.getLinkURL().toString();
        var linkUriHtml = htmlEscape(linkUri);
        var linkTitle = gContextMenu.linkText();
        var linkTitleHtml = htmlEscape(linkTitle);
//ここまで
    }


以上で完了。


ちなみに

ユーザー設定部分は

  var mMenus = [
    {
      //画像
      label: "Image Source",
      accesskey: "I",
      text: '<img src="%IMAGE_URL_HTMLIFIED%" alt="%IMAGE_ALT_HTMLIFIED%" />',
      condition: "image"
    },
    {
      //画像のアンカータグ
      label: "Image Anchor",
      accesskey: "H",
      text: '<a href="%LINK_URL_HTMLIFIED%"><img src="%IMAGE_URL_HTMLIFIED%" alt="%IMAGE_ALT_HTMLIFIED%" /></a>',
      condition: "link-image"
    },    
    {
      //区切り
      label: "separator",
      condition: "image"
    },  
    {
      //リンク先のアンカータグ
      label: "Link Anchor",
      accesskey: "L",
      text: '<a href="%LINK_URL_HTMLIFIED%">%LINK_TITLE_HTMLIFIED%</a>',
      condition: "link"
    },
    {
      //リンク先のタイトル+URL
      label: "Link PlainText",
      accesskey: "K",
      text: '%LINK_TITLE%%EOL%%LINK_URL%',
      condition: "link"
    },
    {
      //区切り
      label: "separator",
      condition: "link"
    },    
    {
      //選択部分を使ってアンカータグ
      label: "Selection Anchor",
      accesskey: "S",
      text: '<a href="%URL_HTMLIFIED%">%SEL_HTMLIFIED%</a>',
      condition: "select"
    },
    {
      //選択部分を引用
      label: "Selection BlockQuote",
      accesskey: "Q",
      text: '<blockquote cite="%URL_HTMLIFIED%" title="%TITLE_HTMLIFIED%">%EOL%%SEL_HTMLIFIED%%EOL%</blockquote>',
      condition: "select"
    },
    {
      //区切り
      label: "separator",
      condition: "select"
    },    
    {
      //今見ているページのアンカータグ
      label: "Page Anchor",
      accesskey: "A",
      text: '<a href="%URL_HTMLIFIED%">%TITLE_HTMLIFIED%</a>'
    },
    {
      //今見ているページのタイトル+URL
      label: "Page PlainText",
      accesskey: "P",
      text: '%TITLE%%EOL%%URL%'
    },
  ];

としている。これで結構うまくいく。


結果

1.何もないところで

  • "Page Anchor"
<a href="http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8">Wikipedia</a>
  • "Page PlainText"
Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
2.リンク上で


  • "Link Anchor"
<a href="http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E6%97%A5%E6%9C%AC%E8%AA%9E%E7%89%88">ウィキペディア日本語版</a>
  • "Link PlainText"
ウィキペディア日本語版
http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E6%97%A5%E6%9C%AC%E8%AA%9E%E7%89%88
3.選択文字列上で


  • "Selection Anchor"
<a href="http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8">現在</a>
  • "Selection BlockQuote"
<blockquote cite="http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8" title="Wikipedia">
現在
</blockquote>
4.画像上で

  • "Image Source"
<img src="http://upload.wikimedia.org/wikipedia/ja/thumb/2/2a/Image_from_Gutza_Wikipedia_.jpg/140px-Image_from_Gutza_Wikipedia_.jpg" alt="" />
  • "Image Anchor"
<a href="http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Image_from_Gutza_Wikipedia_.jpg"><img src="http://upload.wikimedia.org/wikipedia/ja/thumb/2/2a/Image_from_Gutza_Wikipedia_.jpg/140px-Image_from_Gutza_Wikipedia_.jpg" alt="" /></a>

のようになる。

ちなみに元のスクリプトからアイコンを非表示にし、ラベルも"Make Anchor"に変えてみた。


ちなみにアイコンはコメントアウトして非表示にし、ラベルも変えてある。