Yep, that worked and it's the simplest approach; thanks again. What I thought was strange, however, was that the debugger right-hand side window shows the four vars as undefined, but when I hovered over them the debugger showed their actual values. I wonder if this is a known bug in the debugger.
On Dec 30, 11:53 pm, PAEz <cdkp...@gmail.com> wrote: > The whole asynchronous way of doing things did my head in to start > with. > You know you can send a bunch of variables in one request so you dont > have to keep playing ping pong. > Heres an example of what you can do.... > //content > chrome.extension.sendRequest({request: "hostDetails"}, > function(response) > { > var server = "https://" + response.hostname + ":" + response.port; > //do the rest of your script here > }); > > //background > //Wait for request for the host name, port, e-mail address and > password from content script > chrome.extension.onRequest.addListener( > function(request, sender, sendResponse) > { > if (request.request == "hostDetails") > { > sendResponse({"hostname": localStorage["hostname"], "port": > localStorage["port"], "passwd": localStorage["passwd"], "email_addr": > localStorage["email_addr"]}); > } else sendResponse({}); // snub them. > } > ); > > ....didnt test it, but it should work > > On Dec 31, 4:04 pm, PhistucK <phist...@gmail.com> wrote: > > > > > Well, you can put there a set of IFs and load other functions that will > > actually do whatever you want. > > There is no nice way of doing it, sorry. > > > ☆PhistucK > > > On Wed, Dec 30, 2009 at 19:37, FractalBob <ruom...@gmail.com> wrote: > > > > Thanks for your suggestion, PhistucK. It helps but it's not quite > > > there. The problem is that I need to handle several responses, so in > > > GetResponseAndAct() I need to determine which response I'm receiving, > > > store it in a variable and move the server declaration outside the > > > function. How do I interrogate GetResponseAndAct for the response? > > > > On Dec 30, 4:04 am, PhistucK <phist...@gmail.com> wrote: > > > > Yes, everything is asynchronous. > > > > > You have sent a request. The response will not be received immediately. > > > > You put a "return" in the function you have assigned to the callback, it > > > > returns this value to... nothing. > > > > > What you should do, is something like that - > > > > function GetResponseAndAct(Response) > > > > { > > > > var server = "https://" + Response.hostname + ":" + Response.port;} > > > > > function getHostParm(parm) > > > > { > > > > chrome.extension.sendRequest({name: parm}, GetResponseAndAct)} > > > > > getHostParm("hostname"); > > > > > ☆PhistucK > > > > > On Wed, Dec 30, 2009 at 10:27, FractalBob <ruom...@gmail.com> wrote: > > > > > Hi, > > > > > > I thought I had this problem licked in my last extension. And I did. > > > > > But now it's happening again and I don't see how this context is any > > > > > different from the last. > > > > > > The following code, in the content script, is sending a couple of > > > > > requests to background.html for data in local storage: > > > > > > background.html waits for requests: > > > > > > //Wait for request for the host name, port, e-mail address and > > > > > password from content script > > > > > chrome.extension.onRequest.addListener( > > > > > function(request, sender, sendResponse) > > > > > { > > > > > if (request.name == "hostname") > > > > > { > > > > > sendResponse({hostname: localStorage["hostname"]}); > > > > > } > > > > > if (request.name == "port") > > > > > { > > > > > sendResponse({port: localStorage["port"]}); > > > > > } > > > > > if (request.name == "passwd") > > > > > { > > > > > sendResponse({passwd: localStorage["passwd"]}); > > > > > } > > > > > if (request.name == "email_addr") > > > > > { > > > > > sendResponse({email_addr: localStorage["email_addr"]}); > > > > > } > > > > > } > > > > > ); > > > > > > However, when I ran the debugger, it seemed that getHostParm() > > > > > completed before the listener could respond. In any case, getHostParm > > > > > () returns "undefined". I know the requested data is on disk, because > > > > > it's part of my options processing and I know that works. Anyone have > > > > > any ideas? > > > > > > -- > > > > > > You received this message because you are subscribed to the Google > > > Groups > > > > > "Chromium-extensions" group. > > > > > To post to this group, send email to > > > chromium-extensi...@googlegroups.com. > > > > > To unsubscribe from this group, send email to > > > > > chromium-extensions+unsubscr...@googlegroups.com<chromium-extensions%2Bunsu > > > > > bscr...@googlegroups.com><chromium-extensions%2Bunsu > > > bscr...@googlegroups.com> > > > > > . > > > > > For more options, visit this group at > > > > >http://groups.google.com/group/chromium-extensions?hl=en. > > > > -- > > > > You received this message because you are subscribed to the Google Groups > > > "Chromium-extensions" group. > > > To post to this group, send email to chromium-extensi...@googlegroups.com. > > > To unsubscribe from this group, send email to > > > chromium-extensions+unsubscr...@googlegroups.com<chromium-extensions%2Bunsu > > > bscr...@googlegroups.com> > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/chromium-extensions?hl=en. -- You received this message because you are subscribed to the Google Groups "Chromium-extensions" group. To post to this group, send email to chromium-extensi...@googlegroups.com. To unsubscribe from this group, send email to chromium-extensions+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/chromium-extensions?hl=en.