Javascript 正在尝试创建向下滚动页面的chrome扩展
我想创建一个类似这样的chrome扩展 如果我点击扩展图标,页面应该开始向下滚动,并保持滚动直到我再次点击图标(切换) manifest.json是Javascript 正在尝试创建向下滚动页面的chrome扩展,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我想创建一个类似这样的chrome扩展 如果我点击扩展图标,页面应该开始向下滚动,并保持滚动直到我再次点击图标(切换) manifest.json是 { "name": "scrolldown", "description": "scroll down the page", "version": "0.1", "permissions": [ "tabs", "<all_urls>" ], "browse
{
"name": "scrolldown",
"description": "scroll down the page",
"version": "0.1",
"permissions": [
"tabs",
"<all_urls>"
],
"browser_action": {
"default_icon": "icon.png"
},
"background": {
"scripts": [
"background.js"
]
},
"manifest_version": 2
}
此代码是半正确的,即如果我单击图标页面开始向下滚动,但如果我再次单击图标页面不会停止。它不停地轻蔑着
我认为background.js中有问题
请帮助您的问题是无法从全局范围访问时间 您应该在函数外部声明
var-time
,如下所示:
var toggle = false;
var time;
chrome.browserAction.onClicked.addListener(function(tab) {
toggle = !toggle;
if (toggle) {
time = setInterval(function() {
chrome.tabs.executeScript(tab.id,
{
code: 'window.scrollBy(0, 1000);'
}
);
}, 2000);
} else {
clearInterval(time);
}
});
这将时间
放入全局范围
有关作用域的更多信息,请查看StackOverflow,并阅读相关内容。Yekes,如果您清理了代码,您(尤其是其他人)在调试时可能会更幸运@Andrew如果您有时间,请编辑我的问题没问题——好了:)很抱歉,我对chrome扩展没有太多经验,因此我不确定我是否可以进一步提供帮助:(@Andrew Huraahhh!它有效,谢谢Andrew,将其作为答案发布,并请解释其背后的原因Andrew虽然我得到了解决方案,但即使阅读了这些链接,我仍然感到困惑,我定义了var time并在同一个函数中访问它,因此应该可以在
clearInterval(time)中访问它
不用担心。实际上,每次单击扩展按钮时,您都在调用一个新函数,因为该函数完全在addListener中定义;因此,它每次都不是同一个函数。这有意义吗?如果您愿意,我可以编辑该问题以使其更清晰。@初学者您还需要帮助吗?我现在明白了,非常感谢您德鲁,没问题!!快乐编码:)
var toggle = false;
var time;
chrome.browserAction.onClicked.addListener(function(tab) {
toggle = !toggle;
if (toggle) {
time = setInterval(function() {
chrome.tabs.executeScript(tab.id,
{
code: 'window.scrollBy(0, 1000);'
}
);
}, 2000);
} else {
clearInterval(time);
}
});