Chrome扩展程序 - 使用热键

时间:2018-03-11 07:23:11

标签: javascript google-chrome-extension

我正在编写一个简单的扩展来执行以下操作:

当我打开某个网站时,例如example.com,然后按某个热键(Ctrl + Space),页面应滚动到某个垂直位置(例如500px)。

以下是我目前的代码:

的manifest.json

{
"name": "Scroll",
"description" : "Scroll",
"version": "1.0",
"manifest_version": 2,
"content_scripts": [{
    "matches": ["https://www.example.com/*"],
    "js": ["script.js"]
}],
"commands": {
    "_execute_browser_action": {
        "suggested_key": {
            "default": "Ctrl+Space"
        }
    }
}

}

的script.js

window.scrollTo(0, 500);

当我测试它时,页面在打开后会滚动到500px。但我希望它只在我按下热键时滚动。我检查了一些教程,但无法弄清楚我错过了什么。任何帮助,将不胜感激。感谢。

修改

修订文件:

的manifest.json

{
    "name": "Scroll",
    "description" : "Scroll.",
    "version": "1.0",
    "manifest_version": 2,
    "background": {
        "scripts": ["script.js"],
        "persistent": false
    },
    "commands": {
        "scroll": {
            "suggested_key": {
                "default": "Ctrl+Space"
            },
            "description": "Scroll"
        }
    }
}

的script.js

chrome.commands.onCommand.addListener(function (command) {
    if (command == "scroll") {
        // alert("Test"); this works
        window.scrollTo(0, 500); // this doesn't work
    }
});

我在测试时会显示警告,但它不会执行滚动。

1 个答案:

答案 0 :(得分:1)

您需要的是后台脚本。

后台脚本是在后台运行并在用户与Chrome浏览器交互时侦听触发器(例如在选项卡上侦听点击事件或在您的情况下侦听击键)。

您的滚动代码位于内容脚本中,该页面将在页面加载时始终运行。因此,你看到的行为。

在后台脚本中,您可以编写滚动代码。因此,只有在看到击键时它才会滚动。

这将为您提供更多帮助:Background Pages in Chrome Extension

希望这有帮助。

编辑:试试这个:

"commands": {
    "scroll" : {
        "suggested_key": {
             "default": "Ctrl+Space" 
        },
        "description": "Scroll Function"
    }    
}

将上述代码放入manifest.json

chrome.commands.onCommand.addListener(function (command) {
    if (command === "scroll") {
        alert("scrolled");
    }
});

将此代码放入background.js