Chromeæ¡å¼µã§ã¯ãBackground pages ããã Event pages ã使ç¨ããã»ããè¯ã
ããããChromeæ¡å¼µãä½ãæ¹ã«ã¯æ¯éç¥ã£ã¦ããã¦æ¬²ããæ©è½ãEvent pages ã«ã¤ãã¦ã®è©±ã§ãã
Event pages ã¯ãä½æããChromeæ¡å¼µã«ãã£ã¦ã¯ãå¿ ããã使ç¨ã§ããããã§ã¯ããã¾ããããããå¯è½ãªãç©æ¥µçã«ä½¿ç¨ãã¦ã»ããã¨æãã¾ãã
å ¬å¼ããã¥ã¡ã³ãã§ããBackground pages ã®ãã¼ã¸åé ã«ã¯ã以ä¸ã®æ§ãªæ³¨ææ¸ãããªããã¦ãã¾ãã
Caution: Consider using event pages instead. Learn more. via: Background Pages - Google Chrome
ãªã Event pages ãªã®ã
çç±ã詳ãã説æããã¨ã
Background pages ã使ç¨ãã¦ããæ¡å¼µã¯ãChromeèµ·åæã«ããã»ã¹ãèµ·åããã以éChromeãçµäºããã¾ã§çãç¶ãã¾ãã
ãã£ã¦ãä¾ã Background pages ãä½ããã¦ããªãã¦ãã¡ã¢ãªãã®ä»ã®ãªã½ã¼ã¹ãå°æãç¶ãããã¨ã«ãªãã¾ãã
Chromeæ¡å¼µãèµ·åãã¦ãããã©ããã¯ãChromeã® Task Manager ãè¦ããã¨ã§ç°¡åã«ç¢ºèªãããã¨ãã§ãã¾ãã
å®éã«è¦ã¦ããããã°åããã¾ããããã®ã¡ã¢ãªæ¶è²»ãçµæ§ã°ãã«ãªãã¾ããã
ã¾ããBackground pages ãèµ·åãã¦ãããã©ããã¯ãChromeæ¡å¼µã®ä¸è¦§ (chrome://extensions/) ã§ç¢ºèªãããã¨ãã§ãã¾ãã
(以ä¸ã¯è±èªè¡¨è¨ã§ãããæ¥æ¬èªã«ãã¦ããã°æ¥æ¬èªã表示ãããã¨æãã¾ãã)
Chromeæ¡å¼µ Vimmers follow status ã®å ´å
å
æ¥ç§ãä½ã£ãChromeæ¡å¼µ Vimmers follow status ã§ã Background pages ã使ç¨ãã¦ãã¾ããã
(ç¾å¨ã®ãã¼ã¸ã§ã³ã§ã¯ Event pages 対å¿ã«ãªã£ã¦ãã¾ã)
ãã®æ¡å¼µã¯ãä¸è¦ãã㨠Content script ã®ã¿ã§å®ç¾ã§ããããªã®ã§ãããOauthèªè¨¼ãå®è£
ããããã«ã©ããã¦ã Background pages ãç¨æããå¿
è¦ãããã¾ããã
ã§ãããOauthèªè¨¼ã常æ使ç¨ãã¦ããããã§ã¯ããã¾ããã
Vimmersページ ã«ã¢ã¯ã»ã¹ã㦠"Show All!" ãã¿ã³ãã¯ãªãã¯ããã¨ããã使ç¨ãã¦ãã¾ããã
ãã以å¤ã®ã¨ãã¯ãBackground pages ã§ã¯ä½ãè¡ãªã£ã¦ãããããã ã¡ã¢ãªã ããå°æããç¶ãã¦ãã¾ããã
ã²ã©ãã§ãããèªåã§ä½ã£ã¨ãã¦ãªãã§ããããããªæ¡å¼µä½¿ãããã®ããããã¾ããã
ããã§ãEvent pages ã®åºçªã§ãã
Backgroud pages ã¨ã»ã¼åãæ©è½ãæã¡ãªãããå¿
è¦ãªæã ãèµ·åãããä¸è¦ã«ãªãã¨èªåçã«çµäºãã¦ãããã¨ãããã¾ãã«ä»åã®ãããªã±ã¼ã¹ã«é©ãããã®ã¨ãªã£ã¦ãã¾ãã
Chromeæ¡å¼µ ãã³çã¢ãªã¼ã ã®å ´å
ãããåé ã§ãè¿°ã¹ãã¨ãããå¿ ããã Event pages ã使ããããã§ã¯ããã¾ããã
ä¾ãã°ãVimmers follow status ãããåã«ãªãªã¼ã¹ããChoromeæ¡å¼µ ニコ生アリーナ ã§ã¯ãBackground pages å ã§çªçµæ å ±ãªã©ã®ãã¼ã¿ãæã£ã¦ãããããã¯ã°ã©ã³ãã§å®æçã«æ°ããçªçµã®ãã§ãã¯ãªã©ãè¡ãªã£ã¦ãã¾ãã
å®æçãªãã§ãã¯ããããªããalarms API ã使ç¨ãããã¨ã§ãªãã¨ããªãã¾ãããçªçµæ
å ±ããã£ãã·ã¥ã¨ãã¦æã£ã¦ããªããã°ããããã¢ãããéããã³ã«åå¾ããªããã°ãªãããé常ã«ä½¿ãã¥ãããã®ã¨ãªã£ã¦ãã¾ãã¾ãã
(ä»ã«ã極åç¡é§ãªéä¿¡ãçºçããªããããªå·¥å¤«ãæ½ããããã¦ãã¾ã)
ãããã£ãæ¡å¼µã§ã¯ Event pages ã使ç¨ãããã¨ã¯é£ããã§ãããã
Background pages ã Event pages ã«ç§»è¡ããæ¹æ³
ã§ã¯ãå®éã«ã©ãããã° Background pages ã Event pages ã«å¤æ´ã§ãããã
ãã®ããã®æéã¯å
¬å¼ããã¥ã¡ã³ãã«ç¤ºããã¦ãã¾ãã
対象ã¨ãªãChromeæ¡å¼µãã©ã®ãããªæ©è½ãæãããã«ãã£ã¦ä¿®æ£å
容ãéã£ã¦ãããããã¾ã㯠Vimmers follow status ã§è¡ã£ãå¤æ´ã説æãã¦ããã¾ãã
ã¨ãã£ã¦ã大ããå¤æ´ã§ã¯ããã¾ããã
æé 1(å ±é): Manifest(manifest.json)ã®å¤æ´
Manifestã以ä¸ã®ããã«å¤æ´ãã¾ãã
{ "name": "Vimmers follow status", "version": "0.1.0", "manifest_version" : 2, "description": "Vimmersãã¼ã¸ã«Twitterã®ãã©ãã¼ç¶æ ã表示ãã¾ãã", "background" : { "page": "background.html" }, // .... 以ä¸çç¥ }
â
{ "name": "Vimmers follow status", "version": "0.1.0", "manifest_version" : 2, "description": "Vimmersãã¼ã¸ã«Twitterã®ãã©ãã¼ç¶æ ã表示ãã¾ãã", "background" : { "scripts": [ "js/lib/chrome_ex_oauthsimple.js", "js/lib/chrome_ex_oauth.js", "js/eventPage.js", "js/lib/ga.js" ], "persistent": false }, // .... 以ä¸çç¥ }
ãã®å¤æ´ã¯ Event pages 使ç¨æã«å¿ é ã®å¤æ´ã§ãã
backgroud.html ãä¸è¦ã«ãªã£ãã®ã§åé¤ããbackground.html å
ã§èªã¿è¾¼ãã§ããjsãã¡ã¤ã«ãå
¨ã¦ scripts ã«æ¸ãåºãã¦ãã¾ãã
ããã«ã"persistent": false ãè¨å®ãããã¨ã§ãBackground pages ã®éæ°¸ç¶åãè¡ããEvent pages æ¹å¼ã«å¤æ´ãã¦ãã¾ãã
æé 2: chrome.extension.sendRequest -> chrome.runtime.sendMessage
ããã¯ç§ãç¥ããªãã£ãã ããªã®ã§ããã
chrome.extension.sendRequest ã Chrome ver.20 ãã deprecated ã¨ãªã£ã¦ãã¾ããã
ããã§ãé常㮠Background pages ã§ã¯ä½¿ç¨ã§ãã¦ãããã§ãããEvent pages ã§ã¯ä½¿ç¨ã§ããªããªã£ã¦ãã¾ããã
誤ã£ã¦ä½¿ç¨ããã¨ä»¥ä¸ã®ãããªã¨ã©ã¼ãåºã¾ãã
Uncaught Error: sendRequest and onRequest are obsolete. Please use sendMessage and onMessage instead.
親åã§ããããããã§æ°ã¥ãã¾ããã
ã¾ããBackground pages ã§ããã¤ä½¿ç¨ã§ããªããªããåããã¾ããã®ã§ã使ç¨ãã¦ããæ¹ã¯æ©ãã«ç§»è¡ããæ¹ãè¯ããã¨æãã¾ãã
æ°æ¹å¼ã® chrome.runtime.sendMessage ã«ã¤ãã¦ã¯ä»¥ä¸ãåç
§ä¸ããã
ç§ã対å¿ããéãã§ã¯ãå¼æ°ãªã©ã¯å¤ãã£ã¦ããªãã£ãããããªãã¼ã ããã ãã§å¯¾å¿ã§ãã¾ããã
以ä¸ããä»å Vimmers forllow status ã§ä¿®æ£ããç¹ã«ãªãã¾ãã
ããã§ãVimmers follow status ãç¡é§ã«ã¡ã¢ãªãå°æããªããªããçµæ¸çãªæ¡å¼µã¨ãªãã¾ããã
以ä¸ã« diff ãããã®ã§è¯ããã°åèã«ãã¦ä¸ããã
Background pages -> Event pages ã®ã¾ã¨ã
å
¬å¼ãã¼ã¸ã® Event pages ã¸ç§»è¡ããããã®ãã§ãã¯ãªã¹ã migrating existing background pages ã®æ¥æ¬èªè¨³ãã©ãã«ããªãããã§ããã®ã§æ訳ãã¦ã¿ã¾ããã
åèã«ã©ããã
background page ãã event page ã¸ã®å¤æ´
background page ãã event page å¤æ´ããå ´åã¯ã以ä¸ã®ãã§ãã¯ãªã¹ãã«å¾ã£ã¦ä¸ããã
- Manifest ã« "persistent": false ã追å ããã
- Event page èªã¿è¾¼ã¿æã«ãæ¯åå¿ è¦ãªåä¿¡eventãç»é²ãããevent page ã¯Chromeæ¡å¼µããã¼ã¸ã§ã³ã¢ããããã¨ãã«ãä¸åº¦ã ãèªã¿è¾¼ã¾ããç»é²ããã¤ãã³ãã®å¦çãè¡ãããã
- Installæãã¾ãã¯Upgradeæã®ã¿å¿ è¦ãªåæåå¦çãããå ´åã¯ãruntime.onInstalled ãã¤ãã³ãã使ç¨ããã
- ããå®è¡ç¶æ ãã¡ã¢ãªã«ä¿æãã¦ããå¿ è¦ãæããªããstorage API ã¾ã㯠IndexdDB ã使ç¨ãããevent page ã¯é·æéãã¼ãããã¦ããªããããå®è¡ç¶æ ãä¿æããã®ã« globalå¤æ° ã¯ä½¿ç¨ããªãã»ããè¯ãã
- å¿ è¦ãªããã¤ãã³ãéç¥ãæå¶ããããã« event filters ã使ç¨ãããä¾ãã°ãtabs.onUpdated ã¤ãã³ãã使ç¨ãããå ´åã代ããã« filter ä»ãã® webNavigation.onCompleted ã¤ãã³ãã使ç¨ãã (tabs API ã«ã¯ filter ãããã¾ãã)ããããããã¨ã§ãå¿ è¦ãªã¤ãã³ãã§ã®ã¿ event page ãèªã¿è¾¼ããã¨ãã§ããã
- runtime.onSuspend event ã使ç¨ãããã¨ã§ãevent page çµäºç´åã«å¦çãè¡ããã¨ãã§ããããããããããããå®æçãªå®è¡ãæ¨å¥¨ããããããããã¨ã§ãonSuspend ã¤ãã³ããåãåããã«Chromeæ¡å¼µãã¯ã©ãã·ã¥ããå ´åã«ãããã¼ã¿ã失ããã¾ããã
- window.setTimeout() ã¾ã㯠window.setInterval() ã®ä»£ããã«ãalarms API ã使ç¨ããããã event page ãéä¸ã§ãçµäºãã¦ãã¾ããããªå ´åããã®ãã㪠DOM-based timers ã¯ä½¿ç¨åºæ¥ãªãã
- extension.getBackgroundPage ã®ä»£ããã« runtime.getBackgroundPage ã使ç¨ããããã®ã¡ã½ããã¯ãå¿ è¦æã« event page ãèµ·åãããããéåæã§å®è¡ãããã
- message passing ã使ç¨ããå ´åãä¸è¦ã«ãªã£ã message ports ã¯éããªããã°ãªããªããmessage ports ãéããããã¾ã§ãevent page ã¯çµäºãããã¨ãã§ãã¾ããã
- context menu API ã使ç¨ããå ´åãcontextMenus.create ã« Stringåã® id ãã©ã¡ã¼ã¿ãè¨å®(idã¯é常optional)ããå¿ è¦ããããã¾ããonclick ãã©ã¡ã¼ã¿ã®ä»£ããã« contextMenus.onClicked ã使ç¨ãã¦listener ãç»é²ããã
誤ããªã©ãããã¾ãããããææé ããã°ã¨æãã¾ãã
ã¾ããå ¬å¼ã®ãµã³ãã«ã¢ããªãé常ã«åèã«ãªãã®ã§ãè¦ã¦ããã¨è¯ããã¨æãã¾ãã
以ä¸ãEvent pages ã®èª¬æã§ããã