Я использую node-inspector для отладки JS с Chrome версии 54.0.2840.99. Я ввожу "node-inspector"
в одну консоль Windows cmd и "node --debug-brk l:\dev\debug\test.js"
в другой консоли cmd. Откройте "http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858"
в Chrome. Он может отлаживать, как обычно. Но я вводил "1 + 2"
в консоли Chrome, нажимаю "Enter"
, ничего не происходит. Я ожидаю, что "3"
будет выводиться на консоль Chrome. Он работал с Chrome версии 48.0.2564.116. Я не тестировал другие версии Chrome.
Это дефект новых версий Chrome? Как решить проблему? Я снял фотографии, как показано ниже:
Это вызвано тем, что Chrome устарел KeyboardEvent.keyIdentifier .
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()
недостаточно, и вышеуказанный код обрабатывает это исправление.
Обходной путь, предложенный здесь , trojanliu , будет редактировать файл 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; }