我无法相信我仍然有基本的编程问题......我知道基础知识,但仍然很难实现我想到的逻辑。反正
我正在构建这个具有一个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循环怎么样?我知道模运算符,代码可以写成:
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();
});
答案 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()基本上就是你想要执行的任何动作,无论是通过内容脚本注入代码还是显示弹出窗口等。