Проблемы с chrome.tabs с chrome.tabs.update и chrome.tabs.executeScript - PullRequest
1 голос
/ 03 января 2011

Я хочу написать небольшое расширение Chrome, которое будет брать информацию с веб-страницы A (текущей веб-страницы), обновлять вкладку до веб-страницы B, а затем вставлять код на веб-страницу B. К сожалению, следующий код обновляет веб-страницу до B, но вводит код для веб-страницы A. Код в background.html:

chrome.tabs.update(tab.id,{url: "http://B.com"});
chrome.tabs.executeScript(tab.id, {file: "inject_into_B.com.js"}); /* injections goes misleadingly to webpage A*/

Ответы [ 2 ]

5 голосов
/ 26 августа 2013

Вы хотите что-то вроде этого:

chrome.tabs.update(tab.id, {url: request.url, active: true}, function(tab1) {

    // add listener so callback executes only if page loaded. otherwise calls instantly
    var listener = function(tabId, changeInfo, tab) {

        if (tabId == tab1.id && changeInfo.status === 'complete') {
            // remove listener, so only run once
            chrome.tabs.onUpdated.removeListener(listener);
            // do stuff
        }
    }
    chrome.tabs.onUpdated.addListener(listener);
});
1 голос
/ 03 января 2011

chrome.tabs.update - это асинхронный вызов (как и почти все остальные), поэтому, если вы хотите выполнить эти команды для использования функции обратного вызова:

chrome.tabs.update(tab.id,{url: "http://B.com"}, function(tab) {
    chrome.tabs.executeScript(tab.id, {file: "inject_into_B.com.js"});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...