Расширение Google Chrome - создайте и удалите вкладку автоматически - PullRequest
1 голос
/ 24 июня 2010

Я создаю расширение, которое запускает внешний скрипт на основе выделенного текста. Пока что скрипт работает, но у меня проблемы с закрытием вновь созданного окна.

В моем background.html у меня есть следующее:

<script>
function executeScript(selection) {
  var queryText = 'script:' + selectedText;
  chrome.tabs.create({url: queryText});
  chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.remove(tab.id);
  });
}
</script>

Моя проблема с настройкой выше, она закрывает вкладку до загрузки "url", поэтому он никогда не выполняет скрипт.

Если я уберу строки getSelected (строки 5-7), он откроет вкладку и отлично выполнит скрипт. Я пытаюсь просто получить синтаксис для автоматического закрытия вкладки после ее выполнения.

Спасибо!

Ответы [ 3 ]

1 голос
/ 09 февраля 2011

Я хотел бы опубликовать дополнительный вопрос по этому вопросу:

Я хочу создать расширение Chrome, которое передает URL (и, в конечном итоге, выделенный текст) заданной вкладки моей программе (в OS X).

Проблема в том, что Chrome закрывает вкладку сразу после ее открытия и не загружает URL-адрес. Единственный способ сделать это - вставить команду alert, что практически невозможно.

Я тоже попробовал с

chrome.tabs.onCreated.addListener

но это тот же результат, и setTimeout, похоже, не зарегистрирован вообще.

Мой код:

chrome.browserAction.onClicked.addListener (функция (вкладка) { chrome.tabs.create ({URL: "MYAPP: добавить URL =" + encodeURIComponent (tab.url)}, Функция (вкладка) { alert («Ваш URL добавлен в myApp»); chrome.tabs.remove (tab.id); }); });

Мне нужен точно такой же результат, только без окна предупреждения ... спасибо за помощь!

1 голос
/ 22 августа 2013

Это сработало для меня:

chrome.tabs.create({ url: yourUrl },function(tab){
                                                setTimeout(function(){chrome.tabs.remove(tab.id);}, 200);
                                    });
1 голос
/ 24 июня 2010

Не совсем точно, что вы пытаетесь выполнить, но если вы хотите закрыть вкладку после запуска скрипта, вы должны заставить скрипт отправить запрос «Закрыть меня» в background.html, используя chrome.extension.sendRequest.

Возможно, вам лучше использовать chrome.tabs.executeScript , который позволяет вам передать функцию (в которой вы можете закрыть вкладку), которая вызывается после завершения работы скрипта.

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