我正在尝试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=preview的plnkr
链接
如何在机顶盒中捕获正确的键码,以便可以自动执行按键事件?
是否可以在上述代码中添加/修改任何额外的行,以在机顶盒上提供正确的键控代码?
最佳答案
找到this link可以解决此问题时,我正在回答自己的问题。
机顶盒使用webkit
运行JavaScript代码,并且在注册keyboardEvent
并在任何按键按下dispatchEvent
的情况下调用keyCode
时,webkit会将任何keyboardEvent
的keyboardEvent
设置为0。
为了克服此问题,请不要使用__triggerKeyboardEvent
,而是使用通用事件以编程方式触发事件。
可以在this link中查看代码。在这里,功能使用通用事件以编程方式触发事件。
它在机顶盒中完美工作。
关于javascript - TypeError:尝试更改只读属性的值。 defineProperty,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39786045/