アナログ
RSS  

Firefox Add-ons:userChromeJS: CopyUrlLitePlus.uc.js2009/08/09 00:03

非選択時のメニュー
非選択時のメニュー

選択中のメニュー
選択中のメニュー

せっかく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;
  }

コメント

_ ポンポン ― 2009/09/22 08:01

はじめまして、
これは便利なので早速追加させてもらいました。
ありがとうございます。

_ puppet ― 2009/09/22 16:26

ポンポン様、はじめまして

どの部分が便利だったのだろうと記事を読み返したら、何をやってる説明か分からなくなってました。orz
(後日スクリプトを見直す時の手がかりになるように書いたつもりだったのに……書き方を考え直さないと)

こんな訳の分からないもの読んでくださってありがとうございます。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
スパムがウザイので合い言葉を入れるようにしました。山と言えば川だろJK


コメント:

トラックバック

このエントリのトラックバックURL: http://puppet.asablo.jp/blog/2009/08/09/4488028/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。