Расширение браузера Chrome действует только один раз - PullRequest
0 голосов
/ 16 апреля 2019

Когда пользователь щелкает значок браузера, должен запускаться spiderSimulator (). Я могу заставить его работать - один раз.

Например, я нажму на значок, и он сделает то, что должен. Но если я обновлю страницу и нажму на нее второй раз, она не будет работать. если я перейду на другой сайт и попробую еще раз, он не будет работать.

Если я обновляю расширение, обновляю страницу и очищаю кеш, оно снова работает - иногда. это супер противоречиво.

Есть идеи, что здесь происходит?

content.js

// Adds an event listener to the browser icon to sends a message to background.js.
chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
        if (request.message === "clicked_browser_action") {
            console.log( 'send message' );
            chrome.runtime.sendMessage({"message": "spider_simulator"});
        }
    }
);

background.js

// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function (tab) {
    // Send a message to the active tab
    chrome.tabs.query({active: true, currentWindow: true}, function (tabs) {
        var activeTab = tabs[0];
        console.log('browser action');
        chrome.tabs.sendMessage(activeTab.id, {"message": "clicked_browser_action"});
    });
});

chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
        if (request.message === "spider_simulator") {
            console.log('run the spider');
            spiderSimulator()
        }
    }
);

// removes the site's stylesheet and replaces it with my own; 
// turns all page elements into nested list items. 
function spiderSimulator() {

    console.log( 'inject stylesheet' );
    chrome.tabs.insertCSS({
        file: 'search-spider-simulator.css'
    });

    console.log( 'execute script' );
    chrome.tabs.executeScript({
        file: 'search-spider-simulator.js'
    });

    window.close();
}

1 Ответ

0 голосов
/ 16 апреля 2019

Как упомянуто wOxxOm, window.close(), выполняемое на фоновой странице , действует само на себя - по сути, прерывая фоновую часть вашего расширения.

Не уверен, что там подразумевалось;если вам нужно закрыть вкладку, с которой вы разговариваете, то это также должно быть executeScript 'ed.

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