Как закрыть текущую вкладку расширения? - PullRequest
16 голосов
/ 12 ноября 2011

Я пытаюсь закрыть страницу параметров расширения.У меня есть кнопка Отмена, и я использую этот код:

chrome.tabs.getCurrent(null, function(tab) {
  chrome.tabs.remove(tab.id, function() {});
});

Когда я пытаюсь использовать его, он всегда выдает эту ошибку:

Uncaught TypeError: Cannot call method 'getCurrent' of undefined

Что не так скод

Ответы [ 4 ]

21 голосов
/ 14 ноября 2011

Это работает для меня с одним небольшим исправлением:

chrome.tabs.getCurrent(function(tab) {
    chrome.tabs.remove(tab.id, function() { });
});

Просто убедитесь, что вы действительно запускаете этот код на странице настроек своего расширения, а не просто на некоторой HTML-странице, потому что chrome.tabs APIдоступно только для добавочных номеров.

8 голосов
/ 12 ноября 2011

Скорее всего, вы запускаете свой код из скрипта контента, где chrome.tabs не определен. Если это так, вы можете вместо этого отправить сообщение на фоновую страницу и сделать фоновую страницу (с доступом к chrome.tabs).

Обратите внимание, что на фоновой странице вы будете использовать chrome.tabs.getSelected, поскольку getCurrent вернет неопределенное значение.

3 голосов
/ 12 ноября 2011

На странице параметров вы можете просто:

window.close()

Если вы хотите использовать chrome.tabs.getCurrent, у вас есть tabs, определенный в разделе разрешений в манифесте

1 голос
/ 24 мая 2012

У меня есть время, чтобы продолжить продление после очень долгого времени. Я снова проверил документацию. Так что это был встроенный скрипт, который я, вероятно, заблокировал с помощью политики безопасности контента в манифесте, потому что я не читал документацию точно.
Теперь Chrome блокирует встроенные скрипты по умолчанию, поэтому мне все равно придется это исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...