JavaScript 为 event.key 警报 event.keyCode 制作基本的polyfill,以实现 Chrome 的现代化

标签 javascript google-chrome polyfills

简而言之,我该如何制作 alert(event.key)返回event.keyCode

我只需要知道如何做到这一点alert(event.key);变成alert(event.keyCode);因为一旦我到了那么远,我就可以很好地重新映射一切。

event.keyCode方法已被弃用。我从来没有搞乱过 JavaScript prototype据我了解,它本质上是用来为旧版浏览器创建一个polyfill(比如,Chrome 40 不支持 event.key 因为......?)。我并不是在寻找要编码的整个函数,我只是想提醒 keyCode因为从那里我可以找出映射代码并用工作代码更新这个问题。

我一直在尝试的内容:

window.onkeydown = function(event)
{
 if (!event.key)
 {
  Object.defineProperty(String.prototype,'key',
  {
   enumerable: false,
   configurable: false,
   writable: false,
   value: function(event.keyCode)
   {
    alert('event.keyCode = '+event.keyCode);
   }
  });
 }

 alert('event.key = '+event.key);
}

没有框架。

最佳答案

组合dandavismy评论,这是一个带有一些错误处理的垫片

(function () {
    var ev;
    try {
        ev = new KeyboardEvent('keydown');
        if (!('key' in ev)) {
            if (!('keyCode' in ev))
                if (console && console.warn)
                    console.warn('Someting went wrong setting up keyboardEvent.key; no keyboardEvent.keyCode');
            Object.defineProperty(
                KeyboardEvent.prototype,
                'key',
                {get: function () {return this.keyCode;}}
            );
        }
    } catch (e) {
        if (console && console.warn)
            console.warn('Someting went wrong setting up keyboardEvent.key; an error was thrown');
    }
}());

关于JavaScript 为 event.key 警报 event.keyCode 制作基本的polyfill,以实现 Chrome 的现代化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29189547/

相关文章:

internet-explorer-8 - Webshims Lib - IE8 的媒体查询

javascript - 使用 Sequelize JS 更新模型

javascript - php json_decode 到数组中

google-chrome - Chrome : waiting for www. site.com,如何知道哪个资源延迟了页面加载?

javascript - 使用 html5 视频和 fullpage.js 时出现 Chrome 错误。任何解决方案?

javascript - 如何使用HTTP协议(protocol)使用IE9下载文件

Javascript OOP 新对象

javascript - 了解 jBox 配置选项

html - chrome 语义 ui 故障中的指向菜单

angular - 如何在 Angular App 中添加 URL Polyfill