首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义chrome扩展快捷键不起作用

自定义chrome扩展快捷键不起作用
EN

Stack Overflow用户
提问于 2021-06-08 17:10:39
回答 3查看 169关注 0票数 1

我正在创建我自己的chrome扩展。我希望能够在单击快捷方式后运行脚本。我的清单如下所示:

代码语言:javascript
运行
复制
{
    "name": "Test",
    "version": "0.0.1",
    "manifest_version": 2,
    "description": "Test ext",
    "homepage_url": "",
    "icons": {
      "16": "icons/test-icon.jpg",
      "48": "icons/test-icon.jpg",
      "128": "icons/test-icon.jpg"
    },
    "default_locale": "en",
    "background": {
      "scripts": ["src/bg/background.js"],
      "persistent": true
    },
    "commands":{
      "run-script": {
        "suggested_key": {
          "default": "Ctrl+E",
          "windows": "Ctrl+E",
          "mac": "Command+E"
        },
        "description": "Run",
        "global": true
      }
    },
    "browser_action": {
      "default_icon": "icons/test-icon.jpg",
      "default_title": "browser action demo",
      "default_popup": "src/browser_action/browser_action.html"
    },
    "permissions": ["tabs", "https://*/*", "storage"],
    "content_scripts": [
      {
        "matches": [
          "https://www.test.co.uk/*"
        ],
        "js": ["src/inject/inject.js"]
      }
    ]
  }

所以我有简单的用户界面和开始按钮的扩展。我希望能够在那之后使用CTRL+E或CMD+E来运行脚本。当我转到chrome设置中的扩展时,我看到了快捷方式:

因此,据我所知,我应该获取console.log,并且我正在后台控制台中获取它。但是,如果我想使用该快捷方式将实际页面更改为另一个页面,该怎么办?我怎样才能做到这一点呢?这不起作用:

代码语言:javascript
运行
复制
chrome.commands.onCommand.addListener((command) => {
  location.replace(
    `https://www.solebox.com/en_GB/checkout?stage=shipping#shipping`
  );
});

什么都没发生。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-18 20:09:09

通过以下方式修复:

代码语言:javascript
运行
复制
chrome.commands.onCommand.addListener((command) => {
  chrome.tabs.update({
    url: `https://www.google.com`,
  });
});

据我所知,我不能在background.js中使用location.replace或任何其他js方法。我只能使用chrome命令来切换页面,然后使用我的inject.js文件在页面上进行一些更改。

票数 -1
EN

Stack Overflow用户

发布于 2021-06-18 20:00:51

// background.js

代码语言:javascript
运行
复制
chrome.commands.onCommand.addListener((command) => {
  // location.replace(...)
  chrome.tabs.query({active: true}, function(tabs) {
    chrome.tabs.update(tabs[0].id, {url: 'https://...'});
  });
});
票数 3
EN

Stack Overflow用户

发布于 2021-06-17 05:17:54

Ctrl+E是chrome自己注册的快捷方式,也许可以试试Ctrl+Q

打开服务工作者/后台脚本的控制台也很重要,日志将在此处显示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67884705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档