Friday, May 10, 2024
34
rated 0 times [  41] [ 7]  / answers: 1 / hits: 25559  / 11 Years ago, wed, september 11, 2013, 12:00:00

The chrome extension I am developing inserts content scripts and css onto every page of a website. However, the user may have a certain page or pages he or she does not want the extension to run on, so it would be great if I could set up the browser action as basically a toggle on / off.



What I'd like to do is something like this:



chrome.browserAction.onClicked.addListener(function(tab) {

//IF ENABLED THEN DISABLE

//IF DISABLED THEN ENABLE

}


Any help would be greatly appreciated!


More From » google-chrome

 Answers
4

Such API is not provided. But two possible workarounds exist:


I. You can use the "disabled" flag variable and update it from your background page.


Background page:


function disableExtension(disabled)
{
chrome.windows.getAll({populate : true}, function (window_list)
{
for (var i = 0; i < window_list.length; ++i)
{
var window = window_list[i];
for (var j = 0; j < window.tabs.length; ++j)
{
var tab = window.tabs[j];
if (checkContentScriptExists(tab))
{
chrome.tabs.executeScript(tab.id, {code : "disabled = " + disabled + ";"}, allTabs: true)
}
}
}
// No matching url found. Open it in the new tab
chrome.tabs.create({ url : url, selected: true });
});
}

And content script should check the condition before the run


if (!disabled) doSomething();

II. A controversial approach to save disable variable within background page content


Background page:


function disableExtension(disabled)
{
global.disabled = disabled;
}
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.msg == "getDisabled") {
sendResponse({disabled: global.disabled});
return true;
}
});

and the content script should query currently disabled status before execution


chrome.runtime.sendMessage({msg: "getDisabled"}, function(response) {
if (!response.disabled) doSomething();
});

[#75761] Tuesday, September 10, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
miles

Total Points: 256
Total Questions: 111
Total Answers: 104

Location: Benin
Member since Fri, Mar 24, 2023
1 Year ago
;