javascript - Popup script and content script can't communicate? -


my problem can't seem message chrome.extension.sendmessage("on"); popup.js transfer content.js.

code popup.js:

function click(e) {     if ( e.target.id == "green"){         chrome.extension.sendmessage("start");         console.info("on");         return;     }      if ( e.target.id == "red"){         chrome.extension.sendmessage("stop");         console.info("off");         return;     } } 

the popup.js receives message when add listener code. content.js can't seem it.

code content.js:

chrome.extension.onmessage.addlistener(     function(request, sender, sendresponse) {         console.info("ok");     } ); 

manifest:

"content_scripts": [ {     "matches": ["<all_urls>"],     "js": ["content.js"],     "run_at": "document_end" } ], 

any appreciated.

chrome.extension.sendmessage non-canonical name.

the old, deprecated api chrome.extension.sendrequest, , new api chrome.runtime.sendmessage, , event likewise chrome.runtime.onmessage.


that said, problem trying send message content script. chrome.runtime.sendmessage send messages extension's own pages; content scripts not considered such.

to send message content script, have use chrome.tabs.sendmessage api call tab's tabid.

assuming want current visible tab:

function click(e) {     if ( e.target.id == "green"){         chrome.tabs.query({active:true, currentwindow: true}, function(tabs){             chrome.tabs.sendmessage(tabs[0].id, "start");         });         console.info("on");         return;     }     /* ... */ } 

if want all tabs, pass {} query , iterate on tabs.

finally, take note of content scripts inject time quirks.


Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

ios - Change Storyboard View using Seague -