Thank you, the timeout thing was confusing me, I just need to use the setTimeout() whenever I want the actions to run in sequence. Thank you all for your help.
On Nov 25, 7:11 pm, Erik Kay <erik...@chromium.org> wrote: > Think about it like this, every time you call one of the chrome.* API > functions, it's like you're actually putting it in a setTimeout rather than > calling it directly (although the delay is very short). For example, if you > wrote this code: > > var foo = 0; > setTimeout(function() { foo = foo + 1; console.log("in setTimeout: " + > foo)}, 0); > foo = foo + 1; > console.log("after setTimeout: " + foo); > > the output would be: > after setTimeout: 1 > in setTimeout: 2 > > So if you really wanted the "after" to happen second, you'd have to change > your code a bit: > > var foo = 0; > setTimeout(function() { foo = foo + 1; console.log("in setTimeout: " + foo); > after();}, 0); > function after() { > foo = foo + 1; > console.log("after setTimeout: " + foo); > > } > > Now you'd get: > > in setTimeout: 1 > after setTimeout: 2 > > Erik > > > > On Wed, Nov 25, 2009 at 3:42 PM, Randall Crock <rlcr...@gmail.com> wrote: > > I am using the debugger and adding a breakpoint on the line following > > chrome.tabs.getSelected() where you have the second console.log(). How do I > > wait until the asynchronous call has completed before moving on? > > > Randy > > > *From:* Erik Kay [mailto:erik...@google.com] > > *Sent:* Wednesday, November 25, 2009 6:40 PM > > *To:* Rlcrock > > *Cc:* Chromium-extensions > > *Subject:* Re: [chromium-extensions] Re: browser_action & tabs > > > When are you checking t? If your code looks like this: > > > var t = null; > > > chrome.tabs.getSelected(null, function(tab){ > > > t = tab; > > console.log(tab);}); > > > console.log("t == " + t); > > > Then it will always print out "t == null". The reason is that the callback > > function happens asynchronously. Even though it linearly looks like the > > callback happens before the console.log, it actually happens some time > > later. > > > Erik > > > On Wed, Nov 25, 2009 at 3:27 PM, Rlcrock <rlcr...@gmail.com> wrote: > > > Ok, so using the debug tools, I can print out the tab using console.log > > (), but when I try to assign to local variables, they do not get > > changed at all. > > > var t = null; > > > chrome.tabs.getSelected(null, function(tab){ > > > t = tab; > > console.log(tab);}); > > > When it runs, the console will have a correct trace, but t will still > > be null. > > > On Nov 25, 4:02 pm, Rafael Weinstein <rafa...@chromium.org> wrote: > > > Stepping won't work because the function you provide gets called later. > > > > Setting a break point inside that function should work. > > > > Does it not? > > > > On Wed, Nov 25, 2009 at 12:15 PM, Rlcrock <rlcr...@gmail.com> wrote: > > > > I am having trouble getting getSelected to read at all. > > > > > my code is: > > > > > var url, title; > > > > chrome.tabs.getSelected(null, function(tab){ > > > > url = tab.url; > > > > title = tab.title; > > > > console.log(tab);}); > > > > > but it never seems to execute the function as I step through in the > > > > debugger, and url and title are always undefined. Is there something > > > > I am doing wrong with my request? > > > > > On Nov 24, 1:49 pm, lorenx <lor...@gmail.com> wrote: > > > >> hi, > > > >> i found out that the extension behavior about the tab properties > > > >> differ between the two modes, production and development: > > > >> if i use the popup normally i don't need to wait for the onupdated > > > >> listener (the page is already loaded) but if i'm in dev mode, the > > > >> popup is called now from chrome-extension://<extension-id>/popup.html, > > > >> i need the listener to ensure the title not to be undefined. > > > > >> i'm try to fix both the behavior in one solution but it is not so > > > >> essential... > > > >> thanks. > > > > >> On Nov 23, 11:34 pm, lorenx <lor...@gmail.com> wrote: > > > > >> > perfect! > > > >> > and... sorry but... how to combine both? > > > > >> > something like: > > > > >> >chrome.tabs.getSelected(null, function(tab){ > > > >> > chrome.tabs.onUpdated.addListener(function(tab.id, > > changeInfo, tab2) > > > >> > { > > > >> > // code here... > > > >> > }); > > > > >> > }); > > > > >> > or: > > > > >> > chrome.tabs.onUpdated.addListener(function(<what_here?>, changeInfo, > > > >> > tab) { > > > >> > chrome.tabs.getSelected(null, function(tab){ > > > >> > // code here... > > > >> > }); > > > > >> > }); > > > > >> > On Nov 23, 8:34 pm, Rafael Weinstein <rafa...@chromium.org> wrote: > > > > >> > > You need to listen to chrome.tabs.onUpdated event. > > > > >> > >http://code.google.com/chrome/extensions/tabs.html#event-onUpdated > > > > >> > > something like > > > > >> > > chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) > > { > > > >> > > if (changeInfo.status == 'complete') { > > > >> > > tabUrl = tab.url; > > > >> > > tabTitle = tab.title; > > > >> > > createLink(); > > > >> > > } > > > > >> > > On Sun, Nov 22, 2009 at 11:59 AM, lorenx <lor...@gmail.com> > > wrote: > > > >> > > > ok, i did it. thank you! > > > > >> > > > but the tab is loading and the title is still not available... > > > >> > > > how to wait for the tab to be completly loaded? > > > > >> > > > On Nov 22, 5:27 am, donaddon <don...@verizon.net> wrote: > > > >> > > >> I'm not sure I understand what you are expecting, but > > getSelected is > > > >> > > >> an asynchronous call. So you can't expect tabUrl and tabTitle > > to be > > > >> > > >> set at the time you are currently calling createLink. They > > will only > > > >> > > >> be set when the callback function is called. You may be > > looking to do > > > >> > > >> something like this: > > > > >> > > >>chrome.tabs.getSelected(null, function(tab) { > > > >> > > >> tabUrl = tab.url; > > > >> > > >> tabTitle = tab.title; > > > >> > > >> createLink(); > > > > >> > > >> }); > > > > >> > > >> On Nov 21, 6:21 am, lorenx <lor...@gmail.com> wrote: > > > > >> > > >> > hi all, > > > >> > > >> > i have a problem getting current tab info. > > > > >> > > >> > var tabUrl; > > > >> > > >> > var tabTitle; > > > >> > > >> > function getTabInfo() { > > > >> > > >> > chrome.tabs.getSelected(null, function(tab){ > > > >> > > >> > console.dir(tab); > > > > >> > > >> > tabUrl = tab.url; > > > >> > > >> > tabTitle = tab.title; > > > >> > > >> > });} > > > > >> > > >> > function createLink() { > > > >> > > >> > console.log(tabUrl + '|' + tabTitle);} > > > > >> > > >> > getTabInfo(); > > > >> > > >> > createLink(); > > > > >> > > >> > what's wrong with this code? > > > >> > > >> > the tab object is output after createLink() is called... > > > >> > > >> > should i have to set up some communication system between > > components? > > > >> > > >> > thanks. > > > > >> > > > -- > > > > >> > > > 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 athttp:// > > groups.google.com/group/chromium-extensions?hl=. > > > > > -- > > > > > 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 athttp:// > > 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.