Chrome扩展程序浏览器操作仅能执行一次

时间:2019-04-15 23:01:03

标签: javascript google-chrome-extension

当用户单击浏览器图标时,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 :(得分:0)

如wOxxOm所述,在后台页面中执行的<record model="ir.ui.view" id="crm_geo_list"> <field name="inherit_id" ref="crm.crm_menu_root"/> <field name="arch" type="xml"> <menuitem parent="crm.crm_menu_root" position="inside" id="main_geoagenc" name="Agenc Geo"/> </field> </record> 对其自身起作用-实质上终止了扩展程序的后台部分。

不确定那里是什么意思;如果您需要关闭正在与之交谈的标签,则还需要window.close()编辑。