livedoor Readerã«ã½ã¼ã·ã£ã«ããã¯ãã¼ã¯ç»é²æ°ã表示ããChrome Extensionãä½ã£ã¦ã¿ã
æè¿ãGoogle Chromeãã ãã¶ä½¿ããããã«ãªã£ããã使ã£ã¦ããã ãã©ãLDRãè¦ã¦ãã¦ãã¨ã³ããªã®ã½ã¼ã·ã£ã«ããã¯ãã¼ã¯ç»é²æ°ãç¥ãããã®ã«ãè¦ããªãããå°ã£ã¦ãã
Firefoxã使ã£ã¦ããã¨ãã¯ã最速インターフェース研究会 :: livedoor Readerに何かくっつけるGreasemonkeyの書き方ã®Greasemonkeyã¹ã¯ãªããã使ã£ã¦ãããã ãã©ãç¾å¨ã®Chromeã§ã¯Greasemonkeyããã®ã¾ã¾åããããªæ¹æ³ã¯(ãã¶ã)ãªãã®ã§ãã©ãã«ããããã¨æã£ã¦ããã
ã¨ããããã§ãåæ§ã®æ©è½ãæã¤Chrome Extensionãä½ã£ã¦ã¿ãã
ãã¦ã³ãã¼ã
ãã¦ã³ãã¼ãã¯ä»¥ä¸ããã©ããã
MacçGoogle Chromeã®4.0.223.11ã§åä½ã確èªããã
ããã¯ä½ã
ãããå ¥ããã¨ãLDRãFastladderãè¦ãã¨ãã«ãåã¨ã³ããªã®ããã¿é¨åã«ã¯ã¦ãªããã¯ãã¼ã¯ã¨livedoorã¯ãªããã®ç»é²æ°ã表示ãããããã«ãªãã 以ä¸ã®ç»åã®ãããªæãã
大æã®ãã¥ã¼ã¹ãµã¤ããªã©ã®ãã£ã¼ãã¯ããã®å ¨ã¦ã®è¨äºã«èå³ããããããããªãã®ã§ãåæ¨é¸æãã¦èªãã¨æãããã®å¤æã®éã«ããã¯ãæ°ãåèã«å ¥ãããã¨ãã§ããããã«ãªãã
ä»çµã¿
ma.laããã®Greasemonkeyã¹ã¯ãªããããã¼ã¹ã«ããããChrome Extensionã¨ãã¦åãããã«ããã ãã
ä½ãæ¹
ä½ãæ¹ã¯ã¨ã£ã¦ãç°¡åã§ãã³ã¼ããçãã®ã§ã以ä¸ã«ã¡ã¢ãã¦ããã
ãã©ã«ããä½ã
ããããä½ãããã¤ãã®ãã¡ã¤ã«ã®ç½®ãå ´æãæåã«ç¨æããã
ä»åã¯ãé©å½ãªå ´æã«ãSBMCounter4LDRãã¨ãããã©ã«ããä½ã£ãã
manifest.json
ã¾ãä½ããã¡ã¤ã«ããã®manifest.jsonãChrome Extensionã®å¤§äºãªæ å ±ã¯å ¨é¨ã³ã³ãJSONå½¢å¼ã
{ "name": "SBMCounter for LDR", "version": "0.1", "description": "LDR/Fastladderã«ãåã¨ã³ããªã®ã½ã¼ã·ã£ã«ããã¯ãã¼ã¯ç»é²æ°ã表示ããæ©è½ã追å ãã¾ãã", "content_scripts": [ { "js": ["main.js"], "matches": [ "http://reader.livedoor.com/reader/*", "http://fastladder.com/reader/*" ] } ] }
name, version, descriptionã¯ããã®Chrome Extensionã®èª¬æã ããã¦content_scriptsã®jsã®ã¨ããã§ãåããããjsãã¡ã¤ã«(ä»åã¯main.js)ãæå®ããmatchesã®ã¨ããã§åããURLã®æ¡ä»¶(ä»åã¯LDRã¨Fastladderã®URL)ãæå®ããã
ãã¡ãããã£ã¨æå®ã§ããé ç®ã¯ãããã©ãä»å使ã£ãã®ã¯ããã ãã
main.js
次ã¯å®éã«å¼ã³åºãããmain.jsãä½ããããã¯æ®éã«JavaScriptã§æ¸ãã
(function(){ window.addEventListener('load', function(){ var urls = [ chrome.extension.getURL('hatenabookmark.js'), chrome.extension.getURL('livedoorclip.js') ]; for(var i = 0; i < urls.length; i++){ var script = document.createElement('script'); script.type = 'text/javascript'; script.charset = 'utf-8'; script.src = urls[i]; document.body.appendChild(script); } }, false); })();
念ã®ãã(function(){ })();ã§å²ã£ã¦ã¿ãããããå¿ è¦ãªã®ãã©ããã¯ç¥ããªããã©ã
ããããå¦çãèªç±ã«æ¸ãã ããä»åã¯ãhatenabookmark.jsã¨livedoorclip.jsã®2ã¤ã®ãã¡ã¤ã«ãèªã¿è¾¼ããããªscriptè¦ç´ ããã¼ã¸ã«æ¿å ¥ããããã«ããã
æåä½ã£ã¦ããã¨ãã¯ãããã§ãããªããã¯ãæ°ã«ã¦ã³ã¿ãLDRã«è¿½å ãããããªã³ã¼ããæ¸ãã¦ãããã©ããªãã(権éçã«ï¼ã¿ã¤ãã³ã°çã«ï¼)ãã¾ãã§ããªãã£ããã¡ããã¨æ¸ãã¦ãã®ã«ä½ãèµ·ããªãæãã
ã§ããã¼ã¸ã®DOMã«scriptè¦ç´ ãåãè¾¼ããããã°åä½ããã ããã¨æã£ã¦ãæçµçã«ä¸è¨ã®ãããªã³ã¼ãã«ãªã£ãã
[追è¨]os0xさんããããã ããã³ã¡ã³ãã«ããã¨ããã¼ã¸å ã®ã¹ã¯ãªããã¨ããã§åä½ããã¹ã¯ãªããã¯ã³ã³ããã¹ããéãã®ã§ããã¼ã¸å ã«å®ç¾©ãããé¢æ°ã¯ãã£ã¡ããå¼ã¹ãªãã¨ã®ãã¨ããªã®ã§ãä¸ã§ãã£ã¦ãããã«ããã¼ã¸å ã«scriptè¦ç´ ãåãè¾¼ããããããæ¹ã§è¯ãããã§ãã[/追è¨]
hatenabookmark.jsã¨livedoorclip.js
ããã¯ma.laããã®Greasemonkeyçã®ã³ã¼ãã»ã¼ãã®ã¾ã¾ãwindowãåå¾ãã¦ããã使ãããã«ãªã£ã¦ããã®ããããã ããããªããã£ãã®main.jsãscriptè¦ç´ ãçæãã¦ãã¼ã¸ã«èªã¾ãã¦ãjsãã¡ã¤ã«ã
// http://la.ma.la/misc/userjs/ldr_with_hatena_bookmark_count_images.user.js (function(){ var description = 'ã¯ã¦ãªããã¯ãã¼ã¯ã«ããã¯ãã¼ã¯ããã¦ãã件æ°ã§ã'; entry_widgets.add('hb_counter', function(feed, item){ var link = item.link.replace(/#/g,'%23'); return [ '<a href="http://b.hatena.ne.jp/entry/', link, '">', '<img src="http://d.hatena.ne.jp/images/b_entry.gif" border=0><img style="border:none;margin-left:3px;" ', 'src="http://b.hatena.ne.jp/entry/image/',link, '"></a>' ].join(''); }, description); })();
// http://la.ma.la/misc/userjs/ldr_with_livedoor_clip_count_images.user.js (function(){ var description = 'livedoorã¯ãªããã«ç»é²ããã¦ãã件æ°ã§ã'; entry_widgets.add('ldc_counter', function(feed, item){ var link = item.link.replace(/#/g,'%23'); return [ '<a href="http://clip.livedoor.com/page/', link, '">', '<img src="http://parts.blog.livedoor.jp/img/cmn/clip_16_12_w.gif" border=0><img style="border:none;margin-left:3px" ', 'src="http://image.clip.livedoor.com/counter/', link, '"></a>' ].join(''); }, description); })();
ãã¹ããã
ä½ããã¡ã¤ã«ã¯ãã®4ã¤ã§çµäºããã¹ãããã«ã¯ãGoogle Chromeãã
chrome://extensions/
ã¨ããURLã«ã¢ã¯ã»ã¹ããã¨ãæ¡å¼µæ©è½ã®ç®¡çãããç»é¢ãéããããã§ãLoad unpacked extension...ããã¿ã³ãæ¼ãã¦ãä»åã®ã³ã¼ããå ¥ã£ããã©ã«ããé¸æãããããããã¨ããèªã¿è¾¼ã¾ããã
ããã¦ããã§ãã使ããããã«ãªã£ããLDRãéãã¨(ãã§ã«éãã¦ããªããªãã¼ãããã¨)ãåä½ã確èªã§ããããã°ã£ã¦ããã³ã¼ããä¿®æ£ãã¦ãèªã¿è¾¼ã¾ããExtensionã®ãReloadããã¿ã³ãæ¼ãã¨ãä¿®æ£ãåæ ãããã
é å¸ç¨ã®ãã¡ã¤ã«ãä½ã
å®æãããããPack extension...ããã¿ã³ãæ¼ãã¦ãã³ã¼ããå ¥ã£ããã©ã«ããæå®ãããããã¨crxãã¡ã¤ã«ã¨pemãã¡ã¤ã«ãçæãããããã¡ã¤ã«åã«ã¯ãé¸æãããã©ã«ãåã使ãããã
crxãChrome Extensionã®æ¬ä½ã§ããããWebãªã©ã§é å¸ããã°è¯ããpemã®æ¹ã¯ãä»å¾ãã®Extensionãã¢ãããã¼ãããéã«ä½¿ã(ãã£ãã®Pack extensionã®ã¨ããã§æå®ãã)ã
ãªããªãç°¡å
ã ãããããããã®ã£ã¦ãå ¨ã¦ãææ¡ããããªããããªå¤§ããªãã©ã¼ãããã®xmlãæ¸ããããè¬ã®ãã¡ã¤ã«ãããã¤ãç¨æãããããã©ã«ãæ§æã®ç´æããã£ãããããããã¨é¢åãªãã¨ãå¤ãã¨æã£ã¦ãããã ãã©Chrome Extensionã¯manifest.jsonã ãæ¸ãã°ãã¨ã¯å ¨é¨èªåã®ããããäºãæ¸ãã®ã¿ãªã®ã§ãé常ã«ç°¡åã ã£ãã
ä»åã®ãããªç°¡åãªGreasemonkeyã¹ã¯ãªããã®ç§»æ¤ãªããç»é¢ã¨ããä½ããªãã¦è¯ãã®ã§å ¥éã«ã¯ã¡ããã©è¯ãæ°ãããã
é常ã«åèã«ãªã£ãè¨äº
ãã®è¨äºãæ¿ããåèã«ãªã£ããFirefoxã®æ¡å¼µãä½ã£ãã¨ãã¯çµæ§å¤§å¤ã ã£ããã©ãChrome Extensionã¯ãã®è¨äºãèªãã°ã¾ãã«Greasemonkeyã¹ã¯ãªãããæ¸ããç¨åº¦ã®ç¥èã§ãããã¨æãããã°ãããè¨äºã