Chrome inspector console does not work with version 54.0.2840.99

霸气de小男生 提交于 2019-12-10 10:25:13

问题


I use node-inspector to debug JS with Chrome version 54.0.2840.99. I enter "node-inspector" in one windows cmd console and "node --debug-brk l:\dev\debug\test.js" in another windows cmd console. Open "http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858" in Chrome. It's able to debug as usual. But I input "1 + 2" in Chrome console, press "Enter", nothing happen. I would expect "3" is output to Chrome console. It did work with Chrome version 48.0.2564.116. I did not test with other Chrome versions.

Is it a defect of the new Chrome versions? How to resolve the problem? I captured the pictures as below:


回答1:


It's caused by Chrome deprecating KeyboardEvent.keyIdentifier.

The workaround would be to add keyIdentifier back to the KeyboardEvent prototype.

I also noticed that the KeyboardEvent.key string values are different from those from KeyboardEvent.keyIdentifier so I show below how to handle those differences if needed.

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;
        } 
    }
});

Simply replacing isEnterKey() is not sufficient and the above code handles this fix.




回答2:


A workaround, as suggested here, by trojanliu would be editing DOMExtension.js file, changing the isEnterKey() function...

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

... to check for the keyCode === 13:

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


来源:https://stackoverflow.com/questions/40562563/chrome-inspector-console-does-not-work-with-version-54-0-2840-99

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!