Chrome检查器控制台无法与版本54.0.2840.99一起使用

时间:2016-11-12 11:50:55

标签: javascript node.js google-chrome google-chrome-devtools node-inspector

我使用node-inspector来调试JS版本54.0.2840.99的JS。 我在一个Windows cmd控制台中输入"node-inspector",在另一个Windows cmd控制台中输入"node --debug-brk l:\dev\debug\test.js"。在Chrome中打开"http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858"。它可以像往常一样调试。但我在Chrome控制台输入"1 + 2",按"Enter",没有任何反应。我希望"3"输出到Chrome控制台。它适用于Chrome版本48.0.2564.116。我没有测试其他Chrome版本。

这是新Chrome版本的缺陷吗?如何解决问题? 我拍摄的照片如下: enter image description here

enter image description here enter image description here

2 个答案:

答案 0 :(得分:4)

here建议{@ 3}}的解决方法是编辑 DOMExtension.js 文件,更改isEnterKey()功能......

vi /usr/local/lib/node_modules/node-inspector/front-end/platform/DOMExtension.js 
/isEnterKey

...检查keyCode === 13

function isEnterKey(event) {
  //suit for event.keyIdentifier
  return (event.keyCode !== 229 && event.keyIdentifier === "Enter") || event.keyCode === 13;
}

答案 1 :(得分:1)

这是由Chrome弃用KeyboardEvent.keyIdentifier引起的。

解决方法是将keyIdentifier添加回KeyboardEvent原型。

我还注意到KeyboardEvent.key字符串值与KeyboardEvent.keyIdentifier不同,所以我在下面说明如何在需要时处理这些差异。

Object.defineProperty(KeyboardEvent.prototype, 'keyIdentifier', {
    get: function() {
        switch (this.key) {
            case "ArrowDown":
                return "Down";
                break;
            case "ArrowLeft":
                return "Left";
                break;
            case "ArrowRight":
                return "Right";
                break;
            case "ArrowUp":
                return "Up";
                break;
            case "Tab":
                return "U+0009";
                break;
            case "Escape":
                return "U+001B";
                break;
            default:
                return this.key;
        } 
    }
});

仅仅替换isEnterKey()是不够的,上面的代码会处理此修复。