类型错误:试图更改只读属性的值.defineProperty



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

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

我的代码是这样的 <>之前的窗口。setTimeout(function () {var keyboardEvent = document.createEvent(" keyboardEvent ");var initMethod = typeof keyboardEvent。== 'undefined' ?"initKeyboardEvent": "initKeyEvent";keyboardEvent [initMethod] ("keydown",//事件类型:keydown, keyup, keypressTrue,//气泡True,//可取消//viewArg:应该是windowfalse,//ctrlKeyArgfalse,//altKeyArgfalse,//shiftKeyArgfalse,//metaKeyArg666,//keyCodeArg: unsigned long虚拟密钥码,否则为0null//charCodeArgs: unsigned long与按下键相关联的Unicode字符,否则为0);删除keyboardEvent.keyCode;Object.defineProperty(keyboardEvent, "keyCode", {"value": 666});window.parent.document.dispatchEvent (keyboardEvent);}, 10000)、之前

我给值666只是为了测试。

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

但是这行代码

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

这是上面代码的plnkr链接http://plnkr.co/edit/my8HkFpRqZRDrFYgIxXL?p=preview

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

我正在回答我自己的问题,因为我发现这个链接正在解决这个问题。

机顶盒使用webkit来运行JavaScript代码,当keyboardEvent被注册并且dispatchEvent被调用时,webkit将keyCode作为任何keyboardEvent的0。

为了克服这个问题,使用通用事件来编程触发事件而不是使用keyboardEvent

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

最新更新