有没有一种方法来模拟按下鼠标点击多个键与JavaScript? [英] Is there a way to simulate pressing multiple keys on mouse click with javascript?
问题描述
我正在研究Chrome扩展功能,以使Netflix视频播放器打开隐藏的改变质量面板。
Netflix根据您的Internet速度自动更改视频质量。
但是有一种已知的方法来打开隐藏面板并手动更改质量。
这是仅在HTML5播放器中打开隐藏面板的方法 CTRL + SHIFT + ALT + S
用户点击标题时有什么方法,
它模拟键盘键 CTRL + SHIFT + ALT + S
?
<$ p $ ('click','div.player-status .player-status-main-title',function(){
alert('点击! ');
//模拟?
});
试试这个因为我无法访问经过测试的Netflix ,从11.11.14开始工作)。
$ b $ pre $
function simulateCtrlShiftAltS() {
//准备注入页面的函数
函数inject(){
//根据需要调整;一些事件仅在某些元素处理
var element = document.body;
function keyEvent(el,ev){
var eventObj = document.createEvent(Events);
eventObj.initEvent(ev,true,true);
//编辑这个以适合
eventObj.keyCode = 83;
eventObj.which = 83;
eventObj.ctrlKey = true;
eventObj.shiftKey = true;
eventObj.altKey = true;
el.dispatchEvent(eventObj);
}
//触发全部3以防万一
keyEvent(element,keydown);
keyEvent(element,keypress);
keyEvent(element,keyup);
}
//注入脚本
var script = document.createElement('script');
script.textContent =(+ injected.toString()+)();;
(document.head || document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
}
这段代码是从注释改编为您链接的答案: https://stackoverflow.com/a/10520017/2518069
成为精确,从这个例子: http://jsbin.com/awenaq/4
关于根据需要调整: 有些页面处理元素上的事件,有些等到它会冒泡到 另外,请注意,如果玩家实际上是一个插件,所有这些可能不起作用。我在YouTube HTML5播放器上测试过它:它适用于除全屏(我认为是安全限制?)的所有内容,并在元素 I'm working on chrome extension to make Netflix video player opens the hidden changing quality panel. Netflix Changes the video quality automatically depending on the speed of your Internet. But there is a known way to open the hidden panel and change the quality manually. This is the method to open the hidden panel in HTML5 Player Only CTRL + SHIFT + ALT + S Is there a way when the user clicks on Title,
Try this ( This code is adapted from comments to the answer you linked: https://stackoverflow.com/a/10520017/2518069 To be precise, from this example: http://jsbin.com/awenaq/4 Regarding "adjust as needed": Some pages process events on an element and some wait until it bubbles to something like Also, note that all of this may not work if the player is actually a plugin. I tested this on YouTube HTML5 player: it works for everything but fullscreen (which I believe to be a security restriction?), and is processed at element 这篇关于有没有一种方法来模拟按下鼠标点击多个键与JavaScript?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
body 或
文档
之类的东西。您可以通过转到开发工具,来源以及启用事件监听器断点>键盘来监视这一点。从那里,您将能够看到哪个事件触发了您需要的更改,以及哪个元素捕获了它 - 当断点触发时,它将位于 this
中。
#movie_player
处处理。
it simulates the keyboard keys CTRL + SHIFT + ALT + S
?$('body').on('click', 'div.player-status .player-status-main-title', function () {
alert('Clicked!');
//Simulate?
});
can't test, since I can't access Netflix tested, confirmed working as of 11.11.14).function simulateCtrlShiftAltS() {
// Prepare function for injection into page
function injected() {
// Adjust as needed; some events are only processed at certain elements
var element = document.body;
function keyEvent(el, ev) {
var eventObj = document.createEvent("Events");
eventObj.initEvent(ev, true, true);
// Edit this to fit
eventObj.keyCode = 83;
eventObj.which = 83;
eventObj.ctrlKey = true;
eventObj.shiftKey = true;
eventObj.altKey = true;
el.dispatchEvent(eventObj);
}
// Trigger all 3 just in case
keyEvent(element, "keydown");
keyEvent(element, "keypress");
keyEvent(element, "keyup");
}
// Inject the script
var script = document.createElement('script');
script.textContent = "(" + injected.toString() + ")();";
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
}
body
or document
. You can spy on this by going to Dev Tools, Sources, and enabling Event Listener Breakpoints > Keyboard. From there, you'll be able to see which event triggers the change you need, and which element catches it - it will be in this
when the breakpoint triggers.#movie_player
.