Stop chrome from reloading a tab in loop

Viewed 102

I'm creating a Chrome extension and one of the actions is to reload the current tab after changing the URL. This is the code below:

submitChoices.addEventListener("click", async () => {
  let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
  let url = fieldChoices(tab); // This returns the new Url based on some choices
  chrome.tabs.query({ active: true, currentWindow: true }, function () {
    chrome.tabs.update(tab.id, { url });
    chrome.tabs.onUpdated.addListener(function () {
      chrome.tabs.reload(); // Issue seems to be here
    });
  });
});

The problem I'm having is that the chrome.tabs.reload(); seems to be stuck in a loop. The tab keeps on reloading and only stops after I change tabs or switch focus to another window/app. Any tips? Thank you!

1 Answers

Your code is a bit confusing, with many parts you don't need. It keeps reloading because the onUpdated listener starts again every time. But you don't need the listener at all, and you don't need the second tabs.query that you are not even using:

submitChoices.addEventListener("click", async () => {
    let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
    let url = fieldChoices(tab); // This returns the new Url based on some choices
    chrome.tabs.update(tab.id, { url });
});
Related