【发布时间】:2016-09-30 07:31:29
【问题描述】:
我正在尝试 window.parent.document.dispatchEvent(keyboardEvent)。
我这样做是为了捕捉 keyboardevent 的 键码值,并将根据按下的键执行一些操作。即使我在浏览器中运行,如果没有此键码,也会显示为 0。
我的代码类似于
window.setTimeout(function () {
var keyboardEvent = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
键盘事件[初始化方法](
"keydown", // 事件类型:keydown, keyup, keypress
true, // 气泡
true, // 可取消
window, // viewArg: 应该是 window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
666, // keyCodeArg : unsigned long 虚拟键码,否则为 0
null // 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});
thorws “TypeError:尝试更改只读属性的值。defineProperty。”当我在机顶盒中运行代码时。
这是plnkr上述代码的链接http://plnkr.co/edit/my8HkFpRqZRDrFYgIxXL?p=preview
如何在机顶盒中捕获正确的键码,以便自动执行按键事件? 是否可以在上述代码中添加/修改任何额外的行,以在机顶盒上提供正确的键码?
【问题讨论】:
标签: javascript html webkit keyboard-events