まめ畑

ゆるゆると書いていきます

ニコニコニュースのTwitterへ投稿するリンクを変更するJetpack Feature

ニコニコニュースに少し前からTwitterへ投稿出来るリンクがついたのですが、なぜかアドレスだけで記事のタイトルは含まれない状態でポストするようになっています。不便だったので、記事のタイトルも含むようにリンクを変更するFeatureを作ってみました。

インストールはこちらから: The Jetpack Gallery’s Final Flight | Mozilla Add-ons Blog

Jetpack galleryでFeatureを投稿する際のサニタイズがいまひとつな感じがします。以下のソースで「javascript:」の部分をわざと「"java"+"script:"」と分割しているのは、「javascript:」のまま投稿すると、「nojavascript...」と変換されてしまうためです。

ソース

/*
   @author: con_mame
   @url: http://d.hatena.ne.jp/con_mame/
   @title: Replace NicoNicoNews Twitter Link
   @description: Add Article Title to Twitter Link
   @version: 0.1
*/

(function(){
   jetpack.future.import("jetpack.pageMods");

   var replaceTweetLink = function(doc){
      const TWIT_LINK = "java"+"script: var f='http://twitter.com/home/?status='+encodeURIComponent('##TWIT##'); if(!window.open(f,'surfing'))location.href=f; void(0);";
      var titleElem;
      var title;
      var link;

      if($("h2.article-header>a", doc).get(0) != undefined){
         titleElem = $("h2.article-header>a", doc);
         title = titleElem.text();
         link = titleElem.get(0).href;
      }else{
         title = jetpack.tabs.focused.contentDocument.title;
         link = jetpack.tabs.focused.url
      }

      var tweet = title + " " + link;
      $("img.tweetthis", doc).parent().get(0).href = TWIT_LINK.replace("##TWIT##", tweet);
   }

   var options ={};
   options.matches = ["http://blog.nicovideo.jp/niconews/*"];

   jetpack.pageMods.add(replaceTweetLink, options);
})();