Chrome扩展程序浏览器操作仅适用一次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chrome扩展程序浏览器操作仅适用一次相关的知识,希望对你有一定的参考价值。

当用户单击浏览器图标时,应运行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();
}
答案

正如wOxxOm所提到的,在后台页面中执行的window.close()会自行处理 - 基本上会终止扩展的后台部分。

不确定那是什么意思;如果你需要关闭你正在谈话的标签,那么这也需要executeScript'ed。

以上是关于Chrome扩展程序浏览器操作仅适用一次的主要内容,如果未能解决你的问题,请参考以下文章

打开Chrome浏览器时,Capybara无法加载或添加扩展程序

Chrome扩展程序适用于比应有的更多网址

替换 Chrome 扩展中的用户文本输入

为什么我的csv下载按钮仅适用于Chrome

日期选择器 html5 标记不适用于 Mozilla、IE 浏览器。但它仅适用于 Chrome

如何获取当前的 Chrome URL?