我不敢相信我仍然有基本的编程问题......我知道基础知识,但仍然很难实现我想到的逻辑。无论如何
我正在构建这个基本的 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 语句的顺序不同,比如交换了 case 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 文件。
$("chrome.browserAction.onClicked.addListener(function)")
当可以使用简单的 JavaScript 时,它会加载库然后使用 jQuery 选择器。另外,我什至不知道这是否是正确的选择器...
任何帮助都会很棒,在此先感谢。
作为记录,当涉及到不应该复杂的事情时,我发现示例扩展毫无用处。
谢谢!
在 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 语句目前不起作用,我的扩展使用此调用而不是最后的 if 语句:
document.addEventListener('DOMContentLoaded', function() {
trigger();
});