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

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

我的代码像

window.setTimeout(function(){
                    var keyboardEvent = document.createEvent(“ KeyboardEvent”);
                    var initMethod = typeof keyboardEvent.initKeyboardEvent!=='未定义'? “ initKeyboardEvent”:“ initKeyEvent”;
                    keyboardEvent [initMethod](
                                   “ keydown”,//事件类型:keydown,keyup,keypress
                                    真实,//气泡
                                    true,//可取消
                                    window,// viewArg:应该是window
                                    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中运行时,效果很好。

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

这是上述代码http://plnkr.co/edit/my8HkFpRqZRDrFYgIxXL?p=previewplnkr链接

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

最佳答案

找到this link可以解决此问题时,我正在回答自己的问题。

机顶盒使用webkit运行JavaScript代码,并且在注册keyboardEvent并在任何按键按下dispatchEvent的情况下调用keyCode时,webkit会将任何keyboardEventkeyboardEvent设置为0。

为了克服此问题,请不要使用__triggerKeyboardEvent,而是使用通用事件以编程方式触发事件。

可以在this link中查看代码。在这里,功能使用通用事件以编程方式触发事件。

它在机顶盒中完美工作。

关于javascript - TypeError:尝试更改只读属性的值。 defineProperty,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39786045/

10-09 17:35