我正在学习如何创建Chrome扩展程序.我刚开始开发一个来捕捉YouTube活动.我想将它与YouTube Flash播放器一起使用(稍后我将尝试使其与HTML5兼容).
manifest.json的:
{
"name": "MyExtension",
"version": "1.0",
"description": "Gotta catch Youtube events!",
"permissions": ["tabs", "http://*/*"],
"content_scripts" : [{
"matches" : [ "www.youtube.com/*"],
"js" : ["myScript.js"]
}]
}
Run Code Online (Sandbox Code Playgroud)
myScript.js:
function state() { console.log("State Changed!"); }
var player = document.getElementById("movie_player");
player.addEventListener("onStateChange", "state");
console.log("Started!");
Run Code Online (Sandbox Code Playgroud)
问题是控制台给了我"开始!" ,但没有"状态改变!" 当我播放/暂停YouTube视频时.
将此代码放入控制台时,它可以正常工作.我究竟做错了什么?
javascript google-chrome youtube-api google-chrome-extension content-script
我正在尝试开发一个JavaScript游戏引擎,我遇到了这个问题:
问题是,当我按下右键然后按空格键时,角色跳跃然后停止移动.
我使用该keydown功能来按下键.如何检查是否一次按下多个键?
我正在尝试在我正在制作的网站上创建快捷方式.我知道我可以这样做:
if(e.which == 17) isCtrl=true;
if(e.which == 83 && isCtrl == true) {
alert('CTRL+S COMBO WAS PRESSED!')
//run code for CTRL+S -- ie, save!
e.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)
但下面的示例更容易,代码更少,但它不是组合键按压事件:
$(document).keypress("c",function() {
alert("Just C was pressed..");
});
Run Code Online (Sandbox Code Playgroud)
所以我想知道如果通过使用第二个例子,我可以做类似的事情:
$(document).keypress("ctrl+c",function() {
alert("Ctrl+C was pressed!!");
});
Run Code Online (Sandbox Code Playgroud)
这可能吗?我试过了它并没有用,我做错了什么.
我想在html页面中模拟给定textarea元素上的keydown事件.因为我正在使用chrome,所以我调用initKeyboardEvent了我的变量,并将我想要输入的keyCode传递给了textarea.这是我尝试过的:
var keyEvent = document.createEvent('KeyboardEvent');
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
inputNode.dispatchEvent(keyEvent);
Run Code Online (Sandbox Code Playgroud)
在这段代码中,我正在键入字母,m但textarea只获取keyCode 13,这是Enter键.所以,我尝试了一个我在网上看到的覆盖代码,它将值设置为keyCodeVal,但没有成功
var keyEvent = document.createEvent('KeyboardEvent');
Object.defineProperty(keyEvent, 'keyCode', {
get : function() {
return this.keyCodeVal;
}
});
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
keyEvent.keyCodeVal = 77;
inputNode.dispatchEvent(keyEvent);
Run Code Online (Sandbox Code Playgroud)
有谁知道如何设置keyCode值?
寻找一种使用jQuery模拟多键按键的方法.例如ALT + F1(按住alt并击中F1).
我已经设法模拟了F1按键,这要归功于: 使用jQuery触发按键事件的明确方法
寻找这样的东西:
$(".f1").click(function() {
var e = jQuery.Event("keydown");
e.keyCode = 18; // ALT key pressed
// while ALT key is pressed, hit the F1 Key
$("input").trigger(e, function(){
var e = jQuery.Event("keydown");
e.which = 112; // F1 key
$("input").trigger(e);
});
});
Run Code Online (Sandbox Code Playgroud) 我试图模仿用户点击我无法控制的代码的网站.我尝试与div作为按钮的元素.
<div role="button" class="c-T-S a-b a-b-B a-b-Ma oU v2" aria-disabled="false" style="-webkit-user-select: none;" tabindex="0">
Generate
</div>
Run Code Online (Sandbox Code Playgroud)
与元素关联的事件监听器(根据Chrome的检查员)是:

而我只是试图点击按钮使用:
var button = $('.c-T-S.a-b.a-b-B.a-b-Ma.oU.v2')
button.click()
Run Code Online (Sandbox Code Playgroud)
......但没有任何反应.选择器有效,经过验证:
alert($('.c-T-S.a-b.a-b-B.a-b-Ma.oU.v2').length); // alerts "1"
Run Code Online (Sandbox Code Playgroud)
我尝试过所有事件处理程序的排列
button.trigger('click');
button.mouseover().mousedown().mouseup()
button.trigger('mouseover', function() { button.trigger('mousedown', function() { button.trigger('mouseup'); }); });
Run Code Online (Sandbox Code Playgroud)
......但仍然没有.如何模拟此div的点击?
如果不清楚,我试图模拟这个div上的单击并触发原始函数,而不是在元素上定义新的单击函数.
UPDATE
其中许多答案确实单击了按钮,但不会产生与手动单击按钮相同的结果.所以问题似乎不一定是点击按钮本身,而是模仿真正的点击.
在Javascript中,我想写一个返回,当前按下所有键列表的功能(这样我可以允许用户创建自定义快捷键.)有什么办法来获得在Javascript中所有当前按下键的列表?
javascript ×5
jquery ×3
keydown ×2
css ×1
html ×1
keyboard ×1
keypress ×1
simulation ×1
youtube-api ×1