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"に変えてみた。
ちなみにアイコンはコメントアウトして非表示にし、ラベルも変えてある。



