Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome Chrome Extension的基本切换_Google Chrome_Google Chrome Extension_Toggle_Togglebutton - Fatal编程技术网

Google chrome Chrome Extension的基本切换

Google chrome Chrome Extension的基本切换,google-chrome,google-chrome-extension,toggle,togglebutton,Google Chrome,Google Chrome Extension,Toggle,Togglebutton,我不敢相信我仍然有基本的编程问题。。。我知道基本原理,但仍然很难实现我想到的逻辑。无论如何 我正在构建这个基本的Chrome扩展,它有一个JavaScript文件,它确实可以工作!唯一的问题是,一旦我点击图标,它将永远打开,直到我将其删除。我想添加一个基本的切换功能,但我很难得到一个工作原型。以下是我的一些想法: var toggle == 1; // or true, i.e. clicked if (functionName() == 1) { function functionNa

我不敢相信我仍然有基本的编程问题。。。我知道基本原理,但仍然很难实现我想到的逻辑。无论如何

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

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=正确
  • 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)”)
    ,这就不会产生任何影响。另外,我甚至不知道这是否是正确的选择

任何帮助都会很好,提前谢谢

作为记录,我发现当涉及到不应该复杂的事情时,扩展是无用的

谢谢

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

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语句目前不起作用,my Extension可用于此调用,而不是末尾的if语句:

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

在不确切知道应该切换什么的情况下,很难给出一个超级详细的答案,但简而言之,您只需要在背景脚本中添加以下内容:

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"]
},

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

变量function on之间的逻辑很难理解。我认为编写的代码会自动将var设置为false。如果是这种情况,为什么在函数为false时触发该函数?我对上面的布尔逻辑有一种理解。此外,是否只有一个if选项?我想在else部分的开头指定var。O、 和===一次vs=?令人困惑我更新了帖子,试图让这听起来更容易。