Chrome扩展程序的基本切换功能

时间:2013-08-10 05:05:01

标签: google-chrome google-chrome-extension toggle togglebutton

我无法相信我仍然有基本的编程问题......我知道基础知识,但仍然很难实现我想到的逻辑。反正

我正在构建这个具有一个JavaScript文件的基本Chrome扩展程序,它确实有用!唯一的问题是,一旦我点击图标就会永远打开,直到我删除它。我想添加一个基本的切换功能,但我很难获得一个工作原型。以下是我的一些想法:

var toggle == 1; // or true, i.e. clicked
if (functionName() == 1) {
    function functionName() {
        Do whatever it is when clicked;
        blah blah blah;
        } else if (functionName() == 0) {
            Turn off;
        } else {};
}

switch(toggle)
{
    case 1:
        Do whatever it is when clicked;
        blah blah blah;
        break;
case 2:
        Turn off;
         break;
default:
        error;
        break;
}

如果if语句和switch语句都有不同的顺序,假设情况1和2被交换,我认为这不会有区别。我不认为switch语句是最好的方法,因为开启或关闭的选项不超过两个。

更改扩展条件的while循环怎么样?我知道模运算符,代码可以写成:

  • 1%2 =假,
  • 2%2 = True,
  • 3%2 =假等等

    然后一个基本的if语句可以工作....

    类似的东西:

    var i = 1;
    while (i % 2 == 1) {
         Do whatever it is when clicked;
         blah blah blah;
         i++;
         }
    

    有人知道最好的方法吗?我玩过jQuery .toggle()事件,但我认为不会这样。我在html文档中没有任何内容,只有JavaScript文件。自从加载库然后在使用简单的JavaScript时使用jQuery选择器$("chrome.browserAction.onClicked.addListener(function)"),它就没有了。另外,我甚至不知道那是否是正确的选择...

任何帮助都会很棒,提前谢谢。

对于记录,我发现sample扩展在涉及不应该复杂的事情时毫无用处。

谢谢!

使用我在background.js中的函数更新代码:

function trigger() {
    chrome.browserAction.onClicked.addListener(function(tab) {
chrome.windows.onFocusChanged.addListener(function(windowId) {
    if (windowId != chrome.windows.WINDOW_ID_NONE) {
        chrome.tabs.query({ active:true, windowId:windowId }, function(tabs) {
            if (tabs.length == 1) {
                var tab = tabs[0];
                chrome.tabs.reload(tab.id);
            }
        });
    }
});
});
}
var functionOn = false;
chrome.browserAction.onClicked.addListener(function() {
    if (functionOn === false) {
                    document.addEventListener('DOMContentLoaded', function() {
                    trigger();
                    });
                functionOn = true;
            } else if (functionOn === true) {
                document.addEventListener('DOMContentLoaded', function() {
                    //nothing...
                });
                functionOn = false;
            }

if语句暂时不起作用,我的exstension使用此调用而不是最后的if语句:

document.addEventListener('DOMContentLoaded', function() {
    trigger();
});

1 个答案:

答案 0 :(得分:0)

如果不确切知道应该切换什么,很难给出一个非常详细的答案,但简而言之,你只需要在你的后台脚本中添加这样的东西:

var functionOn = false;
chrome.browserAction.onClicked.addListener(function() {
    if (functionOn === false) {
        doSomething();
        functionOn = true;
    } else {
        functionOn = false;
        // Don't do anything.
    }
});

通过将变量“functionOn”放在后台页面中,状态是持久的。您可能已经意识到这一点,但是要创建后台脚本,只需将其添加到清单文件中:

"background": {
  "scripts": ["background.js"]
},

很难说你要尝试用toggle做什么,但doSomething()基本上就是你想要执行的任何动作,无论是通过内容脚本注入代码还是显示弹出窗口等。