Amazon短縮URLをクリップボードにコピーするJetpackFeatureをつくってみた

xpconnectってなんだろう、クリップボードにアクセスできるのかなエントリー。


インストールした後にAmazonの商品ページへいくとステータスバーにアイコンが表示されるので、それをクリックすると商品の短縮URLクリップボードにコピーされます。

// ==JetpackFeature==
// @name           amazon_short_url
// @namespace      http://d.hatena.ne.jp/Cherenkov/
// @include        http://www.amazon.*
// ==/JetpackFeature==

jetpack.tabs.onReady(function(doc) {
  if(!/^www\.amazon\./.test(doc.location.host)) return false;
  if (doc.getElementById("ASIN")) {
    var asin = doc.getElementById("ASIN").value;
    jetpack.statusBar.append({
      html: '<img src="http://www.amazon.co.jp/favicon.ico"/>',
      width: 16,
      onReady: function(widget){
        $(widget).click(function(){
          var host = (/www\.amazon\.co\.jp/.test(doc.location.host)) ? "amazon.jp" : doc.location.host.replace(/www\./,'');
          var href = "http://" + host +"/dp/" + asin;
          jetpack.notifications.show("copy!");
          var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
                            .getService(Components.interfaces.nsIClipboardHelper);
          clipboard.copyString(href);
        });
      }
    });
  }
});

インストール

amazon_short_url

問題点

  • 更新するたびにステータスバーにアイコンがappendされる。
  • タブを切り替えてAmazon以外のページになったときもステータスバーにアイコンが表示される。

まとめ

Xなんちゃらをつかって クリップボードへコピーができることを確認できた。タブごとのコンテンツに合わせた処理はどうやるんだー。