Message passing with nested async call in chrome extension failsChrome tab.create and tab.getSelectedBackground to content-script of preloading page message failsVariables temporarily undefined outside of chrome.extension.sendMessage callback functionChrome Extension Message passing: response not sentDart chrome extension: How to send a response in onMessage?Message passing with chrome.downloadsChrome extension message passing from popup to contentChrome extension: sendMessage from content to background getting response from popupchrome.runtime.onMessage response with async awaitSend message from content script to another
Mage Armor with Defense fighting style (for Adventurers League bladeslinger)
I’m planning on buying a laser printer but concerned about the life cycle of toner in the machine
What are these boxed doors outside store fronts in New York?
Dragon forelimb placement
Can divisibility rules for digits be generalized to sum of digits
How does one intimidate enemies without having the capacity for violence?
To string or not to string
What do you call a Matrix-like slowdown and camera movement effect?
The use of multiple foreign keys on same column in SQL Server
What does it mean to describe someone as a butt steak?
How is the claim "I am in New York only if I am in America" the same as "If I am in New York, then I am in America?
Has the BBC provided arguments for saying Brexit being cancelled is unlikely?
Is it unprofessional to ask if a job posting on GlassDoor is real?
Arthur Somervell: 1000 Exercises - Meaning of this notation
Why are 150k or 200k jobs considered good when there are 300k+ births a month?
In Japanese, what’s the difference between “Tonari ni” (となりに) and “Tsugi” (つぎ)? When would you use one over the other?
What typically incentivizes a professor to change jobs to a lower ranking university?
Show that if two triangles built on parallel lines, with equal bases have the same perimeter only if they are congruent.
Are the number of citations and number of published articles the most important criteria for a tenure promotion?
How can bays and straits be determined in a procedurally generated map?
Modeling an IPv4 Address
How to write a macro that is braces sensitive?
Font hinting is lost in Chrome-like browsers (for some languages )
"You are your self first supporter", a more proper way to say it
Message passing with nested async call in chrome extension fails
Chrome tab.create and tab.getSelectedBackground to content-script of preloading page message failsVariables temporarily undefined outside of chrome.extension.sendMessage callback functionChrome Extension Message passing: response not sentDart chrome extension: How to send a response in onMessage?Message passing with chrome.downloadsChrome extension message passing from popup to contentChrome extension: sendMessage from content to background getting response from popupchrome.runtime.onMessage response with async awaitSend message from content script to another
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
This works: Simple message passing with no nested call to chrome API in the onMessage listener.
content_script
chrome.runtime.sendMessage( message: "what is my windowId?" , function(response)
// clearLocalStorage(response.allWindowsId);
windowId = response.windowId;
console.log(windowId);
);
background_script
chrome.runtime.onMessage.addListener(function(request, sender,sendResponse)
if (request.message === "buttonClick")
chrome.tabs.reload(sender.tab.id);
sendResponse(message: 'handle button click');
else if (request.message === "what is my windowId?")
sendResponse(
windowId: sender.tab.windowId
);
return;
);
This doesnot work: Nested call chrome.windows.getAll in the onMessage listener.
background_script
chrome.runtime.onMessage.addListener(function(request, sender,sendResponse)
if (request.message === "buttonClick")
chrome.tabs.reload(sender.tab.id);
sendResponse(message: 'handle button click');
else if (request.message === "what is my windowId?")
// additional code here
chrome.windows.getAll(function(windows)
sendResponse(
windowId: sender.tab.windowId,
windows: windows
);
);
return;
);
I've also tried to make the call chrome.windows.getAll async using chromeExtensionAsync, but no luck yet.
The following is the error message. It seems that the call to window.getAll happens after the function onMessage returns, even though I've marked this function async by the final return; statement.
Error handling response: TypeError: Cannot read property 'windowId' of undefined
Unchecked runtime.lastError: The message port closed before a response was received.
google-chrome-extension message-passing
add a comment |
This works: Simple message passing with no nested call to chrome API in the onMessage listener.
content_script
chrome.runtime.sendMessage( message: "what is my windowId?" , function(response)
// clearLocalStorage(response.allWindowsId);
windowId = response.windowId;
console.log(windowId);
);
background_script
chrome.runtime.onMessage.addListener(function(request, sender,sendResponse)
if (request.message === "buttonClick")
chrome.tabs.reload(sender.tab.id);
sendResponse(message: 'handle button click');
else if (request.message === "what is my windowId?")
sendResponse(
windowId: sender.tab.windowId
);
return;
);
This doesnot work: Nested call chrome.windows.getAll in the onMessage listener.
background_script
chrome.runtime.onMessage.addListener(function(request, sender,sendResponse)
if (request.message === "buttonClick")
chrome.tabs.reload(sender.tab.id);
sendResponse(message: 'handle button click');
else if (request.message === "what is my windowId?")
// additional code here
chrome.windows.getAll(function(windows)
sendResponse(
windowId: sender.tab.windowId,
windows: windows
);
);
return;
);
I've also tried to make the call chrome.windows.getAll async using chromeExtensionAsync, but no luck yet.
The following is the error message. It seems that the call to window.getAll happens after the function onMessage returns, even though I've marked this function async by the final return; statement.
Error handling response: TypeError: Cannot read property 'windowId' of undefined
Unchecked runtime.lastError: The message port closed before a response was received.
google-chrome-extension message-passing
1
There's an official trick: movereturn
into theelse
branch before } and make itreturn true
. See Chrome Extension Message passing: response not sent
– wOxxOm
Mar 8 at 4:12
Solved! It could be solved without movereturn
elsewhere. Making itreturn true;
is enough to solve it.
– Cảnh Toàn Nguyễn
Mar 8 at 5:19
add a comment |
This works: Simple message passing with no nested call to chrome API in the onMessage listener.
content_script
chrome.runtime.sendMessage( message: "what is my windowId?" , function(response)
// clearLocalStorage(response.allWindowsId);
windowId = response.windowId;
console.log(windowId);
);
background_script
chrome.runtime.onMessage.addListener(function(request, sender,sendResponse)
if (request.message === "buttonClick")
chrome.tabs.reload(sender.tab.id);
sendResponse(message: 'handle button click');
else if (request.message === "what is my windowId?")
sendResponse(
windowId: sender.tab.windowId
);
return;
);
This doesnot work: Nested call chrome.windows.getAll in the onMessage listener.
background_script
chrome.runtime.onMessage.addListener(function(request, sender,sendResponse)
if (request.message === "buttonClick")
chrome.tabs.reload(sender.tab.id);
sendResponse(message: 'handle button click');
else if (request.message === "what is my windowId?")
// additional code here
chrome.windows.getAll(function(windows)
sendResponse(
windowId: sender.tab.windowId,
windows: windows
);
);
return;
);
I've also tried to make the call chrome.windows.getAll async using chromeExtensionAsync, but no luck yet.
The following is the error message. It seems that the call to window.getAll happens after the function onMessage returns, even though I've marked this function async by the final return; statement.
Error handling response: TypeError: Cannot read property 'windowId' of undefined
Unchecked runtime.lastError: The message port closed before a response was received.
google-chrome-extension message-passing
This works: Simple message passing with no nested call to chrome API in the onMessage listener.
content_script
chrome.runtime.sendMessage( message: "what is my windowId?" , function(response)
// clearLocalStorage(response.allWindowsId);
windowId = response.windowId;
console.log(windowId);
);
background_script
chrome.runtime.onMessage.addListener(function(request, sender,sendResponse)
if (request.message === "buttonClick")
chrome.tabs.reload(sender.tab.id);
sendResponse(message: 'handle button click');
else if (request.message === "what is my windowId?")
sendResponse(
windowId: sender.tab.windowId
);
return;
);
This doesnot work: Nested call chrome.windows.getAll in the onMessage listener.
background_script
chrome.runtime.onMessage.addListener(function(request, sender,sendResponse)
if (request.message === "buttonClick")
chrome.tabs.reload(sender.tab.id);
sendResponse(message: 'handle button click');
else if (request.message === "what is my windowId?")
// additional code here
chrome.windows.getAll(function(windows)
sendResponse(
windowId: sender.tab.windowId,
windows: windows
);
);
return;
);
I've also tried to make the call chrome.windows.getAll async using chromeExtensionAsync, but no luck yet.
The following is the error message. It seems that the call to window.getAll happens after the function onMessage returns, even though I've marked this function async by the final return; statement.
Error handling response: TypeError: Cannot read property 'windowId' of undefined
Unchecked runtime.lastError: The message port closed before a response was received.
google-chrome-extension message-passing
google-chrome-extension message-passing
asked Mar 8 at 4:03
Cảnh Toàn NguyễnCảnh Toàn Nguyễn
11627
11627
1
There's an official trick: movereturn
into theelse
branch before } and make itreturn true
. See Chrome Extension Message passing: response not sent
– wOxxOm
Mar 8 at 4:12
Solved! It could be solved without movereturn
elsewhere. Making itreturn true;
is enough to solve it.
– Cảnh Toàn Nguyễn
Mar 8 at 5:19
add a comment |
1
There's an official trick: movereturn
into theelse
branch before } and make itreturn true
. See Chrome Extension Message passing: response not sent
– wOxxOm
Mar 8 at 4:12
Solved! It could be solved without movereturn
elsewhere. Making itreturn true;
is enough to solve it.
– Cảnh Toàn Nguyễn
Mar 8 at 5:19
1
1
There's an official trick: move
return
into the else
branch before } and make it return true
. See Chrome Extension Message passing: response not sent– wOxxOm
Mar 8 at 4:12
There's an official trick: move
return
into the else
branch before } and make it return true
. See Chrome Extension Message passing: response not sent– wOxxOm
Mar 8 at 4:12
Solved! It could be solved without move
return
elsewhere. Making it return true;
is enough to solve it.– Cảnh Toàn Nguyễn
Mar 8 at 5:19
Solved! It could be solved without move
return
elsewhere. Making it return true;
is enough to solve it.– Cảnh Toàn Nguyễn
Mar 8 at 5:19
add a comment |
1 Answer
1
active
oldest
votes
I just published an OSS library that helps with this case: @wranggle/rpc
Take a look at the BrowserExtensionTransport. It includes an example for making remote calls between a content script and the background window.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55056543%2fmessage-passing-with-nested-async-call-in-chrome-extension-fails%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I just published an OSS library that helps with this case: @wranggle/rpc
Take a look at the BrowserExtensionTransport. It includes an example for making remote calls between a content script and the background window.
add a comment |
I just published an OSS library that helps with this case: @wranggle/rpc
Take a look at the BrowserExtensionTransport. It includes an example for making remote calls between a content script and the background window.
add a comment |
I just published an OSS library that helps with this case: @wranggle/rpc
Take a look at the BrowserExtensionTransport. It includes an example for making remote calls between a content script and the background window.
I just published an OSS library that helps with this case: @wranggle/rpc
Take a look at the BrowserExtensionTransport. It includes an example for making remote calls between a content script and the background window.
answered Mar 9 at 0:18
ferbsferbs
12816
12816
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55056543%2fmessage-passing-with-nested-async-call-in-chrome-extension-fails%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
There's an official trick: move
return
into theelse
branch before } and make itreturn true
. See Chrome Extension Message passing: response not sent– wOxxOm
Mar 8 at 4:12
Solved! It could be solved without move
return
elsewhere. Making itreturn true;
is enough to solve it.– Cảnh Toàn Nguyễn
Mar 8 at 5:19