Javascript TypeError:尝试更改只读属性的值。定义属性

Javascript TypeError:尝试更改只读属性的值。定义属性,javascript,html,webkit,keyboard-events,Javascript,Html,Webkit,Keyboard Events,我正在尝试window.parent.document.dispatchEvent(keyboardEvent) 我这样做是为了捕捉keyboardevent的keycode值,并根据按下的键执行一些操作。如果没有这个键码,即使在浏览器中运行,也会显示为0 我的代码是这样的 window.setTimeout(function () { var keyboardEvent = document.createEvent("KeyboardEvent");

我正在尝试window.parent.document.dispatchEvent(keyboardEvent)

我这样做是为了捕捉keyboardevent的keycode值,并根据按下的键执行一些操作。如果没有这个键码,即使在浏览器中运行,也会显示为0

我的代码是这样的

window.setTimeout(function () { var keyboardEvent = document.createEvent("KeyboardEvent"); var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent"; keyboardEvent[initMethod]( "keydown", // event type : keydown, keyup, keypress true, // bubbles true, // cancelable window, // viewArg: should be window false, // ctrlKeyArg false, // altKeyArg false, // shiftKeyArg false, // metaKeyArg 666, // keyCodeArg : unsigned long the virtual key code, else 0 null // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0 ); delete keyboardEvent.keyCode; Object.defineProperty(keyboardEvent, "keyCode", {"value" : 666}); window.parent.document.dispatchEvent(keyboardEvent); }, 10000); setTimeout(函数(){ var keyboardEvent=document.createEvent(“keyboardEvent”); var initMethod=typeof keyboardEvent.initKeyboardEvent!=“未定义”?“initKeyboardEvent”:“initKeyEvent”; 键盘事件[初始化方法]( “keydown”,//事件类型:keydown、keydup、keypress 对,//气泡 true,//可取消 窗口,//viewArg:应该是窗口 false,//ctrlKeyArg false,//altKeyArg false,//shiftKeyArg false,//metaKeyArg 666,//keyCodeArg:未签名的长虚拟密钥代码,否则为0 null//charCodeArgs:与按下的键关联的Unicode字符的无符号长,否则为0 ); 删除keyboardEvent.keyCode; Object.defineProperty(keyboardEvent,“keyCode”,“value”:666}); window.parent.document.dispatchEvent(keyboardEvent); }, 10000); 我给出值666只是为了测试

当我在chrome中运行它时,它工作得很好

但是这行代码对象。defineProperty(keyboardEvent,“keyCode”,“value”:666}); Object.defineProperty(keyboardEvent, "keyCode", {"value" : 666}); thorws“TypeError:试图更改只读属性的值。defineProperty。”当我在机顶盒中运行代码时

这是上述代码的
plnkr
链接

如何在机顶盒中捕获正确的按键代码,以便自动执行按键事件?
是否可以在上述代码中添加/修改任何额外的行,以在机顶盒上提供正确的键代码?

我正在回答我自己的问题,因为我发现这是解决此问题的方法

机顶盒使用
webkit
运行JavaScript代码,当注册
keyboardEvent
并调用
dispatchEvent
时,对于任何按键,webkit将
keyCode
作为0表示任何
keyboardEvent

要解决此问题,请不要使用
keyboardEvent
使用泛型事件以编程方式触发事件

代码可以在中看到。这里的函数
\uTriggerKeyboardEvent
使用泛型事件以编程方式触发事件


它在机顶盒中工作得非常好。

我正在回答我自己的问题,因为我找到了解决这个问题的方法

机顶盒使用
webkit
运行JavaScript代码,当注册
keyboardEvent
并调用
dispatchEvent
时,对于任何按键,webkit将
keyCode
作为0表示任何
keyboardEvent

要解决此问题,请不要使用
keyboardEvent
使用泛型事件以编程方式触发事件

代码可以在中看到。这里的函数
\uTriggerKeyboardEvent
使用泛型事件以编程方式触发事件

它在机顶盒中工作得非常好