ãã©ãŠã¶æ¡åŒµæ©èœã§ã¯ãGoogle ChromeïŒããã³ChromiumïŒãæ©èœäžæãéèŠã§ã-ããã¯ã°ã©ãŠã³ãããŒãžã chrome-extensionãšãã圢åŒã®ç¹å¥ãªURLããããŸãã// ciegcibjokpkcklhgbpnmnikpkmkhbjk /ãããã§ãé·ããã¡ã€ã³åã¯ãã©ãŠã¶ãŒã®è žã§äœæãããã©ã³ãã ãªååã§ãããOSãµãŒãã¹ãã©ã«ããŒå ã®æ¡åŒµãã£ã¬ã¯ããªãåç §ããŸãã ã³ã³ãã³ãã¹ã¯ãªããïŒãã©ãŠã¶ããŒãžã§å®è¡ããããŠãŒã¶ãŒã¹ã¯ãªããã«é¡äŒŒïŒããããã¡ã€ã«ããã³æ¡åŒµæ©èœç»åã«ã¢ã¯ã»ã¹ã§ããŸãã ããããå€ãã®æ©èœãå®è¡ããããšã¯äžå¯èœã§ãããã®ãã¹ã¯ããã¯ã°ã©ãŠã³ãããŒãžã«ãããŸããå®éã®ãã¡ã€ã³åã®ã°ã«ãŒãã«é¢é£ããã¹ãã¬ãŒãžãé 眮ããŸãã æ¡åŒµæ©èœå šäœã«å ±éã®æ¡åŒµæ©èœèšå®ãä¿åããŸãã
ãã®èª¬æã¯ãChromeã®ããã¥ã¡ã³ãã®ããŒãžã«ã¯ãããŸããã ãããååšããŸããããä»ã®ããã€ãã®ãã¡ãœãããšãªããžã§ã¯ãã®ããã«ãå®éã«ã¯ä¿®æ£ããããŸã§ãããã¯æå³ããŸããã 説æããã¡ãã»ãŒãžã³ã°ãªããžã§ã¯ãã®åäœã¯ãStackOverflowãžã®å¿çã®ããã€ãã®äŸã§ç¢ºèªãããŠããŸãã æ¯åç°ãªãäŸã§çããæ¢ãã®ã¯éªšãæããã®ã§ããã®æ··ä¹±ãçµããããããã«ãããã§1ãæã«éããŠã¿ãŸãããã ãã€ã¬ã¯ãã³ãŒã«ããã¯ãšã³ãŒã«ããã¯ã®4ã€ã®çµã¿åããã¯ãã¹ãŠåæãããŠãããããç®ã®åã«ã¯åžžã«ãããã®åäœãã¿ãŒã³ããããŸãã
ãã¹ããšãã¢ãè¡ãã«ã¯ã3ã€ã®ãã¡ã€ã«ïŒmanifest.jsonãscript.jsãbackground.jsïŒãã³ããŒãŸãã¯äœæããChromeã§éçºè ã¢ãŒãã§ãã¹ãæ¡åŒµæ©èœãäœæããã³ã³ãœãŒã«ã®ã¡ãã»ãŒãžã2ããŒãžïŒåã蟌ã¿ã¹ã¯ãªããã¹ã¯ãªããã®ãããã©ãŠã¶ãŒãŠã£ã³ããŠïŒã§ç¢ºèªããå¿ èŠããããŸãã jsããã³backgroundïŒbackground.jsããã¯ã°ã©ãŠã³ãã³ã³ãœãŒã«ãèŠã-chromeïŒ// extensions /ã®[ãã¥ãŒã¢ãŒãã確èªïŒ_generated_background_page.html]ãªã³ã¯ãã¯ãªãã¯ããŠãã ããïŒã èšäºã®ã³ãŒãã®2ã€ã®ãã©ã°ã¡ã³ããããŒãžã«é 眮ããŠå®è¡ãããšãæ¢è£œã®æ¡åŒµæ©èœã§ãåãããšãæ©èœããŸãã
Habréã§ã¯ã2012幎11æã«habrahabr.ru/post/159145ã§åæ§ã®åé¡ãé©çšç®çã§è§£æ±ºãããŸãããæé»ã®ä¿®æ£ãšäœ¿çšãšåãç¥èæºã§ãã ãã·ã¢èªã®ã€ã³ã¿ãŒãããã§ã¯ãåæ§ã®åé¡ã2012幎6æã®èšäºã§èª¬æãããŠããŸããGoogleChromeãã©ãŠã¶ãŒã®æ¡åŒµã¹ã¯ãªããã§å®è¡ããããšããäºå®ãèæ ®ããŠããã®ãããªåé¡ã解決ããããã«äœ¿çšãããã¡ã«ããºã ã説æããŸãã
åããã¡ã€ã³ã®ãŠã£ã³ããŠãšãã¬ãŒã ã®ããŒãžïŒå¥ã®ã¹ã¯ãªããç°å¢ã®ãŠã£ã³ããŠãªã©ïŒã«çŽæ¥ã¢ã¯ã»ã¹ã§ããå Žåãããã¯ã°ã©ãŠã³ãããŒãžãããã³ä»ã®ã¿ããšãã©ãŠã¶ãŒããŒãžã¯ãä»ã®ãã¡ã€ã³ã®ããŒãžãšããŠæ©èœããŸãã ã¡ãã»ãŒãžãéä¿¡ããŠã匱ãæ¥ç¶ãããããã·ãŒãžã£ã®ãã¿ãŒã³ãå®çŸãã ã·ãªã¢ã«åã§ãããªããžã§ã¯ãã®ã¿ãéä¿¡ã§ããŸããDOMãç°å¢ããã®ä»ã®è€éãªãªããžã§ã¯ãã¯éä¿¡ã§ããŸããã
èæ¯ããŒãžã®ããã«åªåããããšããããŸãã ã¹ã¯ãªãããŸãã¯ãŠãŒã¶ãŒã¹ã¯ãªããã§ã¯èããããªãæ©èœãå®è¡ããŸãã ãã¹ãŠã®ããŒãžã«å ±éã®ã¡ã¢ãªã ãã§ã¯ãããŸããã developer.chrome.com/extensions/api_index.htmlã§èª¬æãããŠããå€ãã®ã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£ ããããå°æ¥ããã«å€ãã®ã€ã³ã¿ãŒãã§ãŒã¹ãæåŸ ãããŠããŸãã ããããªã¡ãã»ãŒãžã€ã³ã¿ãŒãã§ãŒã¹ã«ã¯ãã³ãŒã«ããã¯é¢æ°ããããäžããããå ŽåãåŒã³åºãåŽã®é¢æ°ã®ç°å¢åŽã§å®è¡ãããŸãããçµæãã©ã¡ãŒã¿ãŒã¯å察åŽããæž¡ãããŸãã
ãããã¯ãã¹ãŠãJavaScriptã®postMessageç°å¢ã®ã€ã³ã¿ãŒãã§ã€ã¹ããããã«å€æŽãããã®ã§ãã¯ãã¹ãã¡ã€ã³ã¢ã¯ã»ã¹èŠå¶ã®åé¡ã解決ããããã«ãã©ãŠã¶ãŒã§äœæãããã®ã¯ããã»ã©åã§ã¯ãããŸããã ããã¯éåžžããŠã£ã³ããŠãšãã¬ãŒã ã®éã§ã¹ã¯ãªãããéä¿¡ããããã«äœ¿çšãããããŒãžã®ãã¡ã€ã³ãç°ãªãå Žåã®å¯äžã®äŸ¿å©ãªéä¿¡æ段ã§ãã 以åã¯ããã®åé¡ã解決ããããã«ã䜿çšãããŠãããªããžã§ã¯ãã®ããŒã¯ãŒãã«åŸã£ãŠãã³ãŒãåãwindow.nameãã®äžã§ãæŸèæãã䜿çšãããŠããŸããã çŸåšã¯åäœããŸãããè€éã§ããã代ããã®postMessageã¡ãœãããšæ¯èŒããŠæããã«é ãã§ãã éåžžã®postMessageã¡ã«ããºã ã¯ãChromeæ¡åŒµæ©èœã®ããŒã¿äº€æã®ã¡ã«ããºã ã«åºã¥ããŠãããããã©ã®ããã«æ©èœããããæãåºããŠãã ããã
PostMessageã€ã³ã¿ãŒãã§ãŒã¹ïŒã¯ãã¹ãã©ãŠã¶ãŒãIE8 +ïŒ
ã¡ãã»ãŒãžã®éå§ããŒãžã¯ãã«ã¹ã¿ã ã€ãã³ããã¡ãã»ãŒãžããäœæããŸããã¡ãã»ãŒãžãéä¿¡ããŸããããã¯ããã®ãã¡ã€ã³ããã§ã¯ãªããã¢ã¯ã»ã¹ããããã®ããè¡ããŸãã ïŒIE8ã«ã¯å¶éããããŸã-ãã¬ãŒã ã®èŠªãŠã£ã³ããŠã®ã¿ã«ã¢ã¯ã»ã¹ããŸãïŒã
otherWindow.postMessage(message, targetOrigin); //message - __ //targetOrigin - otherWindow, " "
ãã¡ã€ã³åãæšæž¬ããããšãã¡ãã»ãŒãžãéä¿¡ãããŸãã otherWindowãŠã£ã³ããŠã§åä¿¡ããã«ã¯ãããã€ãã®æ¡ä»¶ãæºããå¿ èŠããããŸãã
1ïŒã€ãã³ããã³ãã©ãŒããããŸãã
2ïŒãã³ãã©ãŒã¯éä¿¡ãã¡ã€ã³ããã®ã¡ãã»ãŒãžããåŸ æ©ããã2çªç®ã®åŒæ°ã§ããã確èªããŸãã
window.addEventListener('message', function(event){ // if(event.origin !== 'URL_-') // , , 'http://example.org' return; ...// event.data, message .postMessage ...// event.source - - , // }, false);
ãŠã£ã³ããŠããèæ¯ããŒãžã«ã¡ãã»ãŒãžãéä¿¡ããïŒChromeïŒ
æ¡åŒµæ©èœã§ã¯ãã³ãŒã«ããã¯ãè¿œå ãããã¡ã€ã³ãã§ãã¯ãèªååããããšã«ãããpostMessageãã¬ãŒã ã¯ãŒã¯ãè¥å¹²åèšèšãããŸããã ã¬ã³ã¬ããã¡ãã»ãŒãžãåéããå Žåããã䟿å©ã«ãªããŸããã æåŸã«ãå©çšå¯èœãªããŒã«ã䜿çšããŠã次ã®sendMessageãŸãã¯sendRequestã«éæ³ããªãããšã瀺ãæšæºã®postMessageã®ã³ãŒãã瀺ããŸããããã¯åãªãã·ã§ã«ã§ãã ããããç¹å¥ãªãããã³ã«ãchrome-extensionïŒ// *ãã§ãã¬ãŒã ãäœæããããã®æ¡åŒµæš©éãäžååã§ãããããpostMessageãå®äºã§ããŸããã§ãããããã«ã€ããŠã¯ããããã§ã¹ããã¡ã€ã«åœ¢åŒãäœãèªèãã
äžèšã®äŸã¯ã Chromeæ¡åŒµæ©èœã®ã€ã³ã¹ããŒã«ããŒãž spmbt.kodingen.com/bgMessageXmp/index.htmããåäœã確èªããã¹ãã調æ»ã§ããŸãã æ¡åŒµæ©èœãã€ã³ã¹ããŒã«ãããŠããªãå Žåã5ã€ã®ãªã³ã¯ãã¯ãªãã¯ãããšãæ¡åŒµæ©èœããªãããšã瀺ãããŸãã ã€ã³ã¹ããŒã«åŸïŒæ¡åŒµåå -å¿ èŠãªãã¡ã€ã«ã¯3ã€ã®ã¿ïŒãã¯ãªãã¯ãããšä»¥äžã«èª¬æããäŸãå®è¡ããŸãã
ã€ã³ã¹ããŒã«æ¹æ³ ïŒ1ïŒã¢ãŒã«ã€ããããŠã³ããŒãã2ïŒè§£åïŒãŸãã¯ããã«ã€ã³ã¹ããŒã«ïŒã3ïŒChromeã§ïŒ//æ¡åŒµæ©èœ/ãéçºè ã¢ãŒããã«ç§»åã4ïŒãå±éãããæ¡åŒµæ©èœãããŠã³ããŒã...ããå®è¡ããã¢ãŒã«ã€ããããã£ã¬ã¯ããªãéžæã 5ïŒæ¡åŒµæ©èœã®ããŠã³ããŒãå ã®ããŒãžãæŽæ°ããŸãã 5ã€ã®ãªã³ã¯ã§ãµã³ãã«ãå®è¡ã§ããŸãã å®è¡åŸãchromeïŒ// extensions /ã䜿çšããŠã¹ã¯ãªãããåé€ããã ãã§ååã§ãã ãã®ãµã³ãã«ã¹ã¯ãªããã¯ãæ¡åŒµæ©èœããã¹ããŸãã¯äœæããããã®ãã¬ãŒã ã¯ãŒã¯ãšããŠäœ¿çšã§ããŸãã ãã®èšäºã§ã¯ãããã¹ãããã¹ã¯ãªããããããã°ããã¿ã€ããã¹ãæé€ããã®ãæäŒããŸããã
äŸ1
ã¿ãããããã¯ã°ã©ãŠã³ãããŒãžã«éä¿¡ããŠããã§çµäºããå¿ èŠãããå ŽåãåçŽãªã¡ãã»ãŒãžåœ¢åŒã䜿çšãããŸãã
chrome.extension.sendMessage(' ');
ã¡ãã»ãŒãžã¯ããã¯ã°ã©ãŠã³ããŸãã¯ä»ã®ããŒãžã§åãå ¥ããããŸãïŒ
chrome.extension.onMessage.addListener(function(request){ if(request==' ') //, console.log('1. : ', request); });
äŸ2
ãã®æ©èœã®ãã¢ã¯ããã£ãŒãããã¯ã®äº€æã«é©åããŠããŸãã ã¹ã¯ãªãããããã©ã¡ãŒã¿ãŒãè¿œå ããŸãã
chrome.extension.sendMessage(' backMsg', function(backMessage){ console.log('2. :', backMessage); });
èæ¯ããŒãžããïŒ
chrome.extension.onMessage.addListener(function(request, sender, f_callback){ if(request==' backMsg'){ //, console.log('2. : ', request); f_callback('backMsg'); // } });
f_callback-ïŒããã¯ã°ã©ãŠã³ãããŒãžã§ã¯ãªãïŒ ã¹ã¯ãªããã§å®è¡ãããŸãããããã¯ã°ã©ãŠã³ãã§ãã©ã¡ãŒã¿ãŒãæå®ãããŠããŸãã
éä¿¡è ãªããžã§ã¯ãã®åœ¢åŒã¯æ¬¡ã®ãšããã§ãã
{ active: true highlighted: true id: 34 //id () incognito: false index: 0 pinned: false selected: true status: "complete" title: "HabrAjax by spmbt" //document.title url: "http://spmbt.kodingen.com/habrahabr/habrAjax/index.htm" //location.href windowId: 1 //id }
ãããã£ãŠãã¡ãã»ãŒãžã®éä¿¡è ã«ã€ããŠåœŒããäœããããããŸãã éä¿¡è ããã®å€ã¯äœ¿çšããŸããããã¡ãã»ãŒãžãã©ã®ã¿ããŸãã¯ãŠã£ã³ããŠããæ¥ããã远跡ããä»ã®ã¿ãã«ããå Žåã¯ä»ã®ã³ã³ãã³ãã¹ã¯ãªããã«å€æŽãéä¿¡ããããšãã§ããŸãã
ïŒäŸ2ã®çµããïŒ
ããè€éãªãã®ãæž¡ãå¿ èŠãããå Žå-æååã®ä»£ããã«ããã·ã¥ãŸãã¯é åãåã蟌ãããšã¯åé¡ãããŸããã åŒæ°ã®ã»ããã®ä»£ããã«ããã·ã¥ãæž¡ã-äžè¬ã«ãããé«åºŠãªåœ¢åŒã®äº€æ-ã¯1ã€ã®åŒæ°ãåããããŒã§èªå·±ææžåããããèªã¿ããããªããŸããããã·ã¥å€ã¯èŠçŽ ããšã«åé 眮ããã³åé€ãããŸã-é åºãèŠããå¿ èŠããªããå€ãæ¬ èœããå¿é ããããŸãã
åŒæ°ãããã·ã¥ã«çœ®ãæããææ³ã§ã¯ããã¹ãŠã«3ã€ã®åŒæ°ã§ååã§ãããããããããã®åœ¹å²ãæãããŸãã ããã«é²ããšãããŒ{requestïŒ...ãsenderïŒ...ãcallbackïŒfïŒïŒ{...}};ãæã€1ã€ã®åŒæ°ã«çœ®ãæããããšãã§ããŸãã ãªãããããªãã£ãã®ã§ããïŒ ã©ãããã圌ãã¯3ã€ã®è°è«ãèæ ®ãã-ããã¯éåžžã«çŽ³å£«çãªå¶éã§ãããèŠããŠïŒãããŠããã«è§£èªããããã«ïŒæ¥ããããããšã§ã¯ãããŸããã ããã«ãã·ã³ãã«ã¯èªå·±ææžåã«è²»ããããŸãã åŒæ°ã2ã3ã®å Žåãéžæè¢ã¯äœçœ®åŒæ°ã«åŸããŠããŸãã
ããšãã°ãã³ãã³ãåã ãã§ãªããããŒã¿ãå«ãããã·ã¥ãéä¿¡ããå¿ èŠããããŸãã ã¹ã¯ãªããããèšè¿°ããŸãã
var data ='From page '; chrome.extension.sendMessage({cmd:'exec1', h:{data1: data, dataX: d+1}, function(backMessage) console.log(backMessage); }});
èæ¯ããŒãžããïŒ
chrome.extension.onMessage.addListener(function(request, sender, callback){ if(request.cmd =='exec1'){ callback('backMsg'); // console.log('Tis message in background page printed after' +' receive of data1 = ', request.h.data1, '; URL= ',sender.url); });
ã³ã³ãã³ãããŒãžããé »ç¹ã«ç¹°ãè¿ãããåŒã³åºããççž®ããŸãã
var inBg = function(cmd, h, f_back){ h.cmd = cmd; chrome.extension.sendMessage(h, f_back); }); ... inBg('exec1', {data1: data, dataX: d+1}, function(){ ... });
ïŒ äœããã®çç±ã§ã 3çªç®ã®ã³ãŒã«ããã¯ã¯æäŸãããŸãã...管çã¯2åã ãåãããã€ãããŸããïŒ
èæ¯ããŒãžãããŠã£ã³ããŠã«ã¡ãã»ãŒãžãéä¿¡ããïŒChromeïŒ
äŸ3
éã®ã¿ã¹ã¯ãããå Žåãããã¯ã°ã©ãŠã³ãããŒãžãããããšãã°ã¢ã¯ãã£ããªã¿ãã«ã¡ãã»ãŒãžãéä¿¡ããŸãã
ããã¯ã°ã©ãŠã³ãã§æ¬¡ã®ããã«èšè¿°ããŸãã
chrome.tabs.getSelected(null, function(tab){ // , chrome.tabs.sendRequest(tab.id,{msg:"msg01"}); // });
ã³ã³ãã³ãå ïŒ
chrome.extension.onRequest.addListener(function(req){ // background console.log('3. :', req.msg); // });
æåã®ã±ãŒã¹ã§ã¯sendMessage-onMessageãã¢ã䜿çšãã2çªç®ã®ã±ãŒã¹ã§ã¯sendRequest-onRequestã䜿çšããããšãéèŠã§ããïŒ ãããã1ã€ã®ãã¢ããã®ãã®ã§ããå Žåãã©ã®æ¹æ³ã§ãæ©èœããŸãã
äŸ4
éã³ãŒã«ããã¯ã§ã¡ãã»ãŒãžãéä¿¡ããå¿ èŠãããå Žåãããã¯ã°ã©ãŠã³ãã§æ¬¡ã®ããã«èšè¿°ããŸãã
var inBack = function(tabId, cmd, h, f_back){ h.cmd = cmd; chrome.tabs.sendMessage(tabId, h, f_back); }; chrome.tabs.getSelected(null, function(tab){ inBack(tab.id,'exec0', {dat:'h'}, function(backMessage){ console.log('4. : ', backMessage); }); });
ã³ã³ãã³ãããŒãžã§ïŒ
chrome.extension.onMessage.addListener(function(request, sender, callback){ if(request.cmd =='exec0'){ // console.log('4. :', request.dat); callback('12w3'); } });
ããªããèŠãããšãã§ããããã«ãããã¯å®è¡ãããŸã-ããã¥ã¡ã³ãã«èšèŒãããŠããããdeveloper.chrome.com/extensions/messaging.htmlã®ãããã«ç°ãªããªããžã§ã¯ãïŒchrome.runtimeïŒã«å¯ŸããŠãchrome.runtimeã¯ãã®ã¿ã¹ã¯ã§ã¯æ©èœããŸãã-ã¡ãœããããããŸããsendMessageã
æšæºpostMessageã§ã®éä¿¡ïŒå€±æïŒ
åŠå®çãªçµæã«ããããããããã®è»¢éã®è©Šã¿ã¯ã postMessageã®ååšã«ãããããããéçºè ãæ¡åŒµæ©èœã§ç¬èªã®ããŒã¿è»¢éæ©èœãåŠçããªããã°ãªããªãã£ãçç±ãæšæž¬ããŸãã
ã³ã³ãã³ãã¹ã¯ãªããã§å®è¡å¯èœãªæ°å°ãªãç¹å¥ãªæ¡åŒµã¡ãœããã®1ã€ã¯chrome.extension.getURLïŒ 'path'ïŒã§ãã æ¡åŒµãªãœãŒã¹ãžã®ãã¹ãè¿ããŸãã ãããéããšãæ¡åŒµãªãœãŒã¹ïŒãã£ã¬ã¯ããªã§ã¯ãªãïŒãååŸããŸã-ããããç»åãšããã¹ããååŸããŸãã ããã§ã¯å¥ã®ãã¡ã€ã³ã圹å²ãæãããŸããããŒãžã¹ã¯ãªããã«å²ãŸããããã¹ããååŸããã«ã¯ãã¯ãã¹ãã¡ã€ã³Ajaxãå®è¡ããå¿ èŠããããŸãã ãŸãã¯ãã¡ãã»ãŒãžã¡ã«ããºã ã䜿çšããŠãã¡ã€ã³ãŠã©ãŒã«çµç±ã§ããã¹ããåä¿¡ããæ¹ãç°¡åã§ãã
äŸ5
å®çŸ©æžã¿ã®ãããã³ã«ïŒãchrome-extensionïŒãïŒã䜿çšããŠãã¡ã€ã³ïŒã// ciegcibjokpkcklhgbpnmnikpkmkhbjkããªã©ïŒã䜿çšããŠã¡ãã»ãŒãžãéä¿¡ããŸãã
var bgUrl = chrome.extension.getURL(''); console.log(bgUrl); //
ãããããã¹ãŠãåçŽãªããã§ã¯ãããŸããã ã³ã³ãã³ãã¹ã¯ãªããã«ã¯ãããã¯ã°ã©ãŠã³ãããŒãžãŠã£ã³ããŠãžã®ã¢ã¯ã»ã¹æš©ããããŸããã ã¡ãœããã¯æ¬¡ã®ãšããã§ãã
chrome.extension.getBackgroundPage();
ãã ããã¢ã¯ã»ã¹ã§ããŸããã
äžæãªãšã©ãŒïŒãgetBackgroundPageãã¯æ¡åŒµããã»ã¹ã§ã®ã¿äœ¿çšã§ããŸãã 詳现ã«ã€ããŠã¯ãã³ã³ãã³ãã¹ã¯ãªããã®ããã¥ã¡ã³ããåç §ããŠãã ããã
ã³ãã³ããŒã¯èœèããŠããŸããã ç°¡åã«äº€æããã«ã¯ããã¬ãŒã ãäœæããå¿ èŠããããŸãã ãã¬ãŒã ã®äœæã劚ãããã®ã¯äœããããŸããã
var ifr = document.createElement('iframe'); ifr.id ='ifr1'; ifr.src = bgUrl; document.body.appendChild(ifr);
ãšã©ãŒãçºçããŸããïŒ
chrome-extensionã®ããŒããæåŠïŒ// ciegcibjokpkcklhgbpnmnikpkmkhbjk / ã æ¡åŒµæ©èœã®å€éšã®ããŒãžã§ããŒãããã«ã¯ããªãœãŒã¹ãweb_accessible_resourcesãããã§ã¹ãããŒã«ãªã¹ããããŠããå¿ èŠããããŸãã
ãããã§ã¹ãã«ã¢ã¯ã»ã¹èš±å¯ãè¿œå ããŸãïŒchrome.extension.sendMessageã䜿çšãããšãããã¯äžèŠã«ãªããŸããïŒã
ãèš±å¯ãïŒ["chrome-extensionïŒ// *"ã...]
Chromeã§ãšã©ãŒãçºçããŸããïŒ//æ¡åŒµæ©èœ/ïŒ
æ¡åŒµæ©èœãã€ã³ã¹ããŒã«ãããšãã«ãèŠåããããŸããïŒ
æš©éãchrome-extensionïŒ//ããäžæã§ããããURLãã¿ãŒã³ã®åœ¢åŒãæ£ãããããŸããã
ã¢ã¯ã»ã¹ãæåŠãããªãã£ãå Žåãå®è¡ããããŸãŸã«ãªããŸãã
ifr.postMessage('Yep', bgUrl.replace(/\/$/,'') );
ãããŠããã¯ã°ã©ãŠã³ãã§-
window.addEventListener('message', function(ev){ console.log('origin: ', ev.origin); },!1);
ããã§äŸãçµäºããããšãã§ããŸã-ä»ã®çç±ã§æšæºæ©èœãä»ããã¢ã¯ã»ã¹ãéããããããšã瀺ããŸãã-ããã¯ã°ã©ãŠã³ãããŒãžããã¬ãŒã ã§è¡šç€ºããå¿ èŠãããããã§ãïŒæããã«ãmanifest_versionãïŒ2ïŒã ãã®ãããChromeæ¡åŒµæ©èœã§ã¯ãæ§æã®æé©åãšåæ¹å亀æã®çç±ãããç¹å¥ãªã¡ãã»ãŒãžã³ã°æ¹æ³ãèæ¡ãããŸããã
äŸã¯ãããã¯ã°ã©ãŠã³ãããŒãžãžã®ã¡ãã»ãŒãžéä¿¡ã«ç¹å¥ãªããªãã¯ããªãããšã瀺ããŸããã ãã ããæ¡åŒµæ©èœã«ã¯ãªãç¹å¥ãªæš©éãå¿ èŠã§ãã chrome.extensionãªããžã§ã¯ãã®ã¡ãœããã®privateéšåã¯å·éã«ãããè¡ããŸãããä»ã®ãã®ã¯æäŸããŸããã ïŒsandbox.htmlã§ãããè¡ãå¿ èŠããããŸããèæ¯ããŒãžãå«ããã¬ãŒã ãäœæã§ããŸãããïŒ
ãã¹ãæ¡åŒµæ©èœãšãã¹ãããŒãžãã€ã³ã¹ããŒã«ããŸãã