我正在使用Chrome擴展,此擴展在瀏覽器操作中有2個圖標(關於&關閉);使用chrome.tabs.executeScript(tab.id,{file:"script.js",function(){});
打開和關閉Chrome擴展
我有問題將其關閉 : 基本上當它在後臺執行的script.js(的script.js注入文件)! 我試圖使用background.js和script.js之間的消息通信,但這也不起作用。
我正在使用Chrome擴展,此擴展在瀏覽器操作中有2個圖標(關於&關閉);使用chrome.tabs.executeScript(tab.id,{file:"script.js",function(){});
打開和關閉Chrome擴展
我有問題將其關閉 : 基本上當它在後臺執行的script.js(的script.js注入文件)! 我試圖使用background.js和script.js之間的消息通信,但這也不起作用。
如果我理解正確,你的擴展應該有兩個狀態,On和Off。點擊分機圖標可以開啓/關閉。
在這種情況下,這樣的擴展知道它處於什麼狀態,你應該使用存儲,以便於click事件,使用類似:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.storage.sync.get('state', function(data) {
if (data.state === 'on') {
chrome.storage.sync.set({state: 'off'});
//do something, removing the script or whatever
} else {
chrome.storage.sync.set({state: 'on'});
//inject your script
}
});
});
不過請注意,這在擴展/瀏覽器層面正在發生的事情並且將應用於所有標籤,因此您可能需要更復雜的內容來記錄標籤ID和狀態。
然後,您可以選擇始終運行內容腳本,並在執行某些操作或注入並刪除腳本之前檢查開/關狀態。我不確定你是否刪除了一個腳本。根據腳本的作用,您可能只想刷新頁面(即,如果腳本使用DOM混亂,並且想在關閉擴展時撤消該腳本)。
background.js
var enable=false;
chrome.browserAction.onClicked.addListener(function (tab) {
enable = enable ? false : true;
if(enable){
//turn on...
chrome.browserAction.setIcon({ path: 'icon.png' });
chrome.browserAction.setBadgeText({ text: 'ON' });
chrome.tabs.executeScript(null, { file: 'content.js' });
}else{
//turn off...
chrome.browserAction.setIcon({ path: 'disable.png'});
chrome.browserAction.setBadgeText({ text: '' });
}
});
公平警告:使用'persistent:false'事件頁面時會失敗 – Xan
你什麼意思通過打開它,並把它關掉多少?你想讓按鈕完全禁用擴展嗎?您不能這樣做,並且顯示「開」按鈕 - 禁用該擴展將禁用該擴展,包括「開」按鈕。 –
當它關閉時,腳本將無法與選項卡交互。 – user2997816
您將需要提供更多信息。 「我遇到了問題」是不夠的 - 人們需要看到一些代碼,而且你需要解釋你所嘗試的,或者他們無法幫助你。 –