Chromeæ¡åŒµã®Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.ãšãããšã©ãŒã解決ãã
◆äºã®èµ·ãã
Chromeæ¡åŒµãäœæããŠããéã«、ãã¿ã³ãã¯ãªãã¯ãããšãã«
ãã©ãŠã¶ã®éããŠããå šãŠã®ã¿ãã®URLã欲ããå Žé¢ããã£ã。
ããèªäœã¯、chrome.tabs.queryã§ååŸã§ããã®ã ã、
chrome.tabs.queryã¯、background.jsã§ãªããšåããªãã®ã§
content_script.jsãšbackground.jsã§éä¿¡ããå¿ èŠããã£ã。
ããã、content_script.jsã§chrome.runtime.sendMessageã䜿ã£ãŠ
background.jsã«éä¿¡ã、background.jsã§chrome.runtime.onMessage.addListener
ã䜿ã£ãŠå蚺ã、sendResponseã§éãè¿ããŠããã¯ããªã®ã ã、
Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.ãšãããšã©ãŒããã°ã«è¡šç€ºããã。
◆解決æ¹æ³
ç§ã®å Žåã ãš、以äžã®äžã€ãè¡ãããšã§è§£æ±ºã§ãã。
ïŒ.manifest.jsonã«ä»¥äžã®å 容ãèšè¿°ããŠããªãã£ã。
"background": {
"scripts": [
"src/js/background.js"
]
},
2.chrome.runtime.onMessage.addListener()ã®functionã®äžã®äžçªæåŸã«
return trueãèšè¿°ããŠããªã
ïŒ.ä¿®æ£åŸãæ¡åŒµæ©èœã®ããŒãž(chrome://extensions/)ã®ãšã¯ã¹ãã³ã·ã§ã³ã®æŽæ°ãã¿ã³ãã¯ãªãã¯ããŠæŽæ°ããŠããªãã£ãçºã§ãã。
◆å®éã«è©Šããããš
調ã¹ããšãã、ãããã«åºãŠããã®ã¯è©Šããã®ã¯ä»¥äžã®äºã€ã§ãã。
・ã»ãã®æ¡åŒµæ©èœãæªããããŠããã®ã§、ä»ã®æ¡åŒµæ©èœãå šéšãªãã«ããã。
・ãšã©ãŒåã®éãæ¥ç¶ã§ããŠããªãã®ã§、æ¥ç¶ã§ãããŸã§setTimeout()ã§åŒã³åºãã°ããããããªãã®ã?
çµè«ããèšãã°、ä»åã®ã±ãŒã¹ã ãšå šéšé§ç®ã ã£ã。
ãªã、æåã«èšè¿°ããå¿ãã人ã®çºã®è§£æ±ºæ¹æ³ã®å 容ãå šãŠè¡ã£ãäžã§
ä»®ã«setTimeoutã®ããæ¹ã§å®è£ ããå Žåã¯
以äžã®ããã«å®è£ ããã°åãããšã¯ç¢ºèªã§ãã。
var getTabUrlsButton =
'<button type="button" class="get_tab_urls_button">ãã©ãŠã¶ã®ã¿ãã®URLååŸ</button>';
$ ('.getTabsUrlsButton').append (getTabUrlsButton);
$ ('.get_tab_urls_button').click (function (e) {
ping ();
});
function ping () {
chrome.runtime.sendMessage ({}, function (response) {
if (chrome.runtime.lastError) {
setTimeout (ping, 1000);
} else {
if (response) {
$ ('.getTabUrlText').html (response.urls);
}
}
});
}
*åèãµã€ã
・ç¹å®ã®Chromeæ¡åŒµæ©èœãOFFã«ãããšãšã©ãŒãæ¶ããäºãæ€èšŒããŠããåç»
Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.(YouTube)
・äžãšåããç¹å®ã®Chromeæ¡åŒµæ©èœãOFFã«ãããšãšã©ãŒãæ¶ãããšãã話ãããŠãã
node.js - How to fix 'Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.' - Stack Overflow
・åçã®äžäŸã§ã®setTimeoutã®è©±ãåèã«ãããŠããã£ã
Chrome Extension message passing: Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist - Stack Overflow
◆ãã®ä»
・調ã¹ãŠãpop.jsãšbackground.jsã®éä¿¡ã«ããçµæã®ã±ãŒã¹ãå€ã
content_script.jsã¯ç¹å¥ãªã±ãŒã¹ãªã®ããšæã£ãŠããã、åã«content_script.jsã§æžã人ãããªãã£ãã ãã®ããã ã£ã。
・background.jsãã、content_script.jsã«ããŒã¿ãæž¡ãéã«ã¿ãã®IDã®æå®ãå¿ èŠã ãšããæ å ±ããããã§èŠãããã、ä»åã®ä»¶ã«éã£ãŠèšãã°å¿ èŠãªãã£ã。
・ãããšã¯çŽæ¥ã¯é¢ä¿ãªãã、chrome.tabs.query()ã䜿ã£ãéã«sendResponse()ã
chrome.tabs.query()ã®functionå€ã§å®£èšãããš、chrome.tabs.query()ãéåæãªã®ã§
å€ãååŸã§ããã«åæå€ããè¿ããªã。ãã®çº、ãã¡ããšåããŠããããã«èŠããã®ã«åæå€ããè¿ããªããŠåãæ··ä¹±ããããšããã£ã。
ããã¯、现ããconsole.logã䜿ãäºã§æããã«åŒã³åºãã®é çªãããããäºã«æ°ãä»ãããšã§、ãªããšãå€æããããšãã§ãã。
◆ãµã³ãã«
content_script.jsãšbackground.jséã§éä¿¡ãããŠ
ã¿ãã®URLãååŸããChromeæ¡åŒµãäœããŸãã。
gitãäžããã®ã§è¯ããã°åèã«ããŠãã ãã。
https://github.com/nononaga/myExample/tree/master/getTabUrls
Chromeæ¡åŒµãäœæããŠããéã«、ãã¿ã³ãã¯ãªãã¯ãããšãã«
ãã©ãŠã¶ã®éããŠããå šãŠã®ã¿ãã®URLã欲ããå Žé¢ããã£ã。
ããèªäœã¯、chrome.tabs.queryã§ååŸã§ããã®ã ã、
chrome.tabs.queryã¯、background.jsã§ãªããšåããªãã®ã§
content_script.jsãšbackground.jsã§éä¿¡ããå¿ èŠããã£ã。
ããã、content_script.jsã§chrome.runtime.sendMessageã䜿ã£ãŠ
background.jsã«éä¿¡ã、background.jsã§chrome.runtime.onMessage.addListener
ã䜿ã£ãŠå蚺ã、sendResponseã§éãè¿ããŠããã¯ããªã®ã ã、
Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.ãšãããšã©ãŒããã°ã«è¡šç€ºããã。
◆解決æ¹æ³
ç§ã®å Žåã ãš、以äžã®äžã€ãè¡ãããšã§è§£æ±ºã§ãã。
ïŒ.manifest.jsonã«ä»¥äžã®å 容ãèšè¿°ããŠããªãã£ã。
"background": {
"scripts": [
"src/js/background.js"
]
},
2.chrome.runtime.onMessage.addListener()ã®functionã®äžã®äžçªæåŸã«
return trueãèšè¿°ããŠããªã
ïŒ.ä¿®æ£åŸãæ¡åŒµæ©èœã®ããŒãž(chrome://extensions/)ã®ãšã¯ã¹ãã³ã·ã§ã³ã®æŽæ°ãã¿ã³ãã¯ãªãã¯ããŠæŽæ°ããŠããªãã£ãçºã§ãã。
◆å®éã«è©Šããããš
調ã¹ããšãã、ãããã«åºãŠããã®ã¯è©Šããã®ã¯ä»¥äžã®äºã€ã§ãã。
・ã»ãã®æ¡åŒµæ©èœãæªããããŠããã®ã§、ä»ã®æ¡åŒµæ©èœãå šéšãªãã«ããã。
・ãšã©ãŒåã®éãæ¥ç¶ã§ããŠããªãã®ã§、æ¥ç¶ã§ãããŸã§setTimeout()ã§åŒã³åºãã°ããããããªãã®ã?
çµè«ããèšãã°、ä»åã®ã±ãŒã¹ã ãšå šéšé§ç®ã ã£ã。
ãªã、æåã«èšè¿°ããå¿ãã人ã®çºã®è§£æ±ºæ¹æ³ã®å 容ãå šãŠè¡ã£ãäžã§
ä»®ã«setTimeoutã®ããæ¹ã§å®è£ ããå Žåã¯
以äžã®ããã«å®è£ ããã°åãããšã¯ç¢ºèªã§ãã。
var getTabUrlsButton =
'<button type="button" class="get_tab_urls_button">ãã©ãŠã¶ã®ã¿ãã®URLååŸ</button>';
$ ('.getTabsUrlsButton').append (getTabUrlsButton);
$ ('.get_tab_urls_button').click (function (e) {
ping ();
});
function ping () {
chrome.runtime.sendMessage ({}, function (response) {
if (chrome.runtime.lastError) {
setTimeout (ping, 1000);
} else {
if (response) {
$ ('.getTabUrlText').html (response.urls);
}
}
});
}
*åèãµã€ã
・ç¹å®ã®Chromeæ¡åŒµæ©èœãOFFã«ãããšãšã©ãŒãæ¶ããäºãæ€èšŒããŠããåç»
Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.(YouTube)
・äžãšåããç¹å®ã®Chromeæ¡åŒµæ©èœãOFFã«ãããšãšã©ãŒãæ¶ãããšãã話ãããŠãã
node.js - How to fix 'Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.' - Stack Overflow
・åçã®äžäŸã§ã®setTimeoutã®è©±ãåèã«ãããŠããã£ã
Chrome Extension message passing: Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist - Stack Overflow
◆ãã®ä»
・調ã¹ãŠãpop.jsãšbackground.jsã®éä¿¡ã«ããçµæã®ã±ãŒã¹ãå€ã
content_script.jsã¯ç¹å¥ãªã±ãŒã¹ãªã®ããšæã£ãŠããã、åã«content_script.jsã§æžã人ãããªãã£ãã ãã®ããã ã£ã。
・background.jsãã、content_script.jsã«ããŒã¿ãæž¡ãéã«ã¿ãã®IDã®æå®ãå¿ èŠã ãšããæ å ±ããããã§èŠãããã、ä»åã®ä»¶ã«éã£ãŠèšãã°å¿ èŠãªãã£ã。
・ãããšã¯çŽæ¥ã¯é¢ä¿ãªãã、chrome.tabs.query()ã䜿ã£ãéã«sendResponse()ã
chrome.tabs.query()ã®functionå€ã§å®£èšãããš、chrome.tabs.query()ãéåæãªã®ã§
å€ãååŸã§ããã«åæå€ããè¿ããªã。ãã®çº、ãã¡ããšåããŠããããã«èŠããã®ã«åæå€ããè¿ããªããŠåãæ··ä¹±ããããšããã£ã。
ããã¯、现ããconsole.logã䜿ãäºã§æããã«åŒã³åºãã®é çªãããããäºã«æ°ãä»ãããšã§、ãªããšãå€æããããšãã§ãã。
◆ãµã³ãã«
content_script.jsãšbackground.jséã§éä¿¡ãããŠ
ã¿ãã®URLãååŸããChromeæ¡åŒµãäœããŸãã。
gitãäžããã®ã§è¯ããã°åèã«ããŠãã ãã。
https://github.com/nononaga/myExample/tree/master/getTabUrls