CMD + R在chrome:// extensions /中不再起作用了

时间:2015-10-09 19:07:10

标签: javascript google-chrome google-chrome-extension

我正在开发Chrome扩展程序,之前,为了重新加载新代码,我只想转到chrome:// extensions /并点击CMD + R.现在这不是重新加载扩展,我必须在CMD + R链接上手动点击(用鼠标!!!)。

这很烦人,不确定这种变化背后的原因是什么。有人知道解决方法吗?

编辑:似乎这已在最近的Chrome版本中得到修复。

3 个答案:

答案 0 :(得分:2)

Ctrl + R被破坏是一个错误:https://code.google.com/p/chromium/issues/detail?id=526945

在修复错误之前,您可以使用How do I auto-reload a Chrome extension I'm developing?中的任何建议来重新加载扩展程序。

答案 1 :(得分:0)

嗯,是的。以前曾经工作过。请注意,这会重新加载所有扩展程序。

无论如何,有很多扩展可以帮助你,例如this one或许多其他人。

如果您有兴趣制作自己的解决方案,chrome.management API可以做到这一点。

答案 2 :(得分:0)

这是一个非常简单的扩展程序,定义了两个快捷键来重新加载所有扩展程序:Ctrl+Shift+RAlt+R。很遗憾,我们无法重新定义Ctrl+R

manifest.json

{
  "manifest_version": 2,
  "name": "Extensions Reloader",
  "short_name": "Extensions Reloader",
  "description": "",
  "version": "0.0.1",

  "permissions": [
    "<all_urls>",
    "tabs",
    "storage",
    "management",
    "http://*/*",
    "https://*/*"
  ],

  "commands": {
    "reload1" : {
      "suggested_key": {
        "default": "Ctrl+Shift+R"
      },
      "description": "Reload all extensions"
    },
    "reload2" : {
      "suggested_key": {
        "default": "Alt+R"
      },
      "description": "Reload all extensions"
    }
  },

  "browser_action": {
    "default_icon": {
      "19": "icon.png",
      "38": "icon.png"
    },
    "default_title": "Reload all extensions"
  },

  "background": {
    "persistent": false,
    "scripts": [
      "background.js"
    ]
  }
}

background.json

chrome.commands.onCommand.addListener(function (command) {
  console.log(command);
  if (command == "reload1" || command == "reload2") {
    reloadAll();
  }
});

chrome.browserAction.onClicked.addListener(reloadAll);

function reloadAll() {
  chrome.management.getAll(function(extensions) {
    for (var i = 0; i < extensions.length; i++) {
      var extension = extensions[i];

      if (extension.id == chrome.runtime.id) {
        continue;
      }

      if (!extension.enabled) {
        continue;
      }

      var id = extension.id;

      chrome.management.setEnabled(id, false, function() {
        chrome.management.setEnabled(id, true);
      });
    }
  });
}