Firefox Add-ons:userChromeJS: CopyUrlLitePlus.uc.js
2009-08-09


禺画像]
非選択時のメニュー

禺画像] 選択中のメニュー

せっかくuserChromeJSを使ってるのだからとMake Link に設定しているのをCopyUrlLitePlus.uc.js - Code-404で置き換えてみました。

CopyUrlLitePlus.uc.jsではマウスカーソルがリンク上にあるときに、リンク先をURLとするメニューが追加されますが、私としてはMake Linkのようにリンク上で右クリックした時にはURLにリンク先が勝手に入る方が望ましかったので、ソースを少しいじりました(更にいじってます)。
(じつのところ、JavaScriptとか何が書いてあるかはチンプンカンプンなのですが、CSSをいじる感覚で切り貼りしてますw)

先程のリンクの部分だと、リンク上で右クリックしたらURLはリンク先に置き換えるとか
if(gContextMenu.onLink){
  text = text.replace(/%URL_HTMLIFIED%/g, link_html);
  text = text.replace(/%URL%/g, link);
} else {
  text = text.replace(/%URL_HTMLIFIED%/g, url_html);
  text = text.replace(/%URL%/g, url);
}

text: '<a href="%URL_HTMLIFIED%">%TITLE_HTMLIFIED%</a>'
text: '<a href="%URL_HTMLIFIED%" title="%TITLE_HTMLIFIED%"></a>'

text: '<a href="%URL_HTMLIFIED%">%TXT_HTMLIFIED%</a>'
text: '<a href="%URL_HTMLIFIED%" title="%TITLE_HTMLIFIED%">%TXT_HTMLIFIED%</a>'
に変えて、選択中文字列とタイトルが切り替わるとか
if(gContextMenu.isTextSelected){
  text = text.replace(/%SEL_HTMLIFIED%/g, sel_html);
  text = text.replace(/%SEL%/g, sel);
  text = text.replace(/%TXT_HTMLIFIED%/g, sel_html);
  text = text.replace(/%TXT%/g, sel);
} else {
  text = text.replace(/%TXT_HTMLIFIED%/g, title_html);
  text = text.replace(/%TXT%/g, title);
}

Make Linkでも不満だった選択中文字列の改行を「<br>改行」にするべく(Make Link 8.06から%text_br%が追加されてたんですね。気が付かなかった。orz)
「function htmlEscape(text) {」

「text = text.replace(/\r\n/g, "<br>\r\n");」
を加えてみたりで、ほぼ満足。
(JavaScriptが分かれば、満足するまでいじるのでしょうけどw)

切り貼りに毛の生えた程度でも、かなり自由度が高くなるのがいいですね。

−追記−
画像のリンクは使ってなかったこともあって「リンク上で右クリックしたらURLはリンク先に置き換える」の副作用に気づいていませんでした。

普通の画像の上で右クリックする分には構わないのですが、リンクになっている画像の上で右クリックすると、表示中のURLでなくリンク先のURLで画像リンクを作成してしまいます。
ということで修正。
    if(gContextMenu.onImage){
      link = url;
      link_html = url_html;
      var imageUri = gContextMenu.imageURL;
      var imageUriHtml = htmlEscape(imageUri);
      var imageAlt = gContextMenu.target.alt;
      var imageAltHtml = htmlEscape(imageAlt);
      var imageTitle = gContextMenu.target.title;
      var imageTitleHtml = htmlEscape(imageTitle);
    }
    var eol = "\r\n";

リンクでない画像でも画像のリンクを有効にするため
gContextMenu.onLink &&を消す。
  function setMenuDisplay(){
    for (var i = 0, menu; menu = mMenus[i]; i++)
      document.getElementById("copyurllite-menu-" + i).hidden =
        menu.condition == "select" ?
          !gContextMenu.isTextSelected :
        menu.condition == "image" ?
          !gContextMenu.onImage :
        menu.condition == "select-image" ?
          !(gContextMenu.isTextSelected && gContextMenu.onImage) :
        menu.condition == "link-image" ?
          !(gContextMenu.onImage) :
        menu.condition == "select-link-image" ?
          !(gContextMenu.isTextSelected && gContextMenu.onLink && gContextMenu.onImage) : false;
  }
[Firefox]
[Add-ons]
[Script]

コメント(全2件)
コメントをする


記事を書く
powered by ASAHIネット