相关疑难解决方法(0)

使用内容脚本将代码插入页面上下文

我正在学习如何创建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

452
推荐指数
5
解决办法
24万
查看次数

如何检测是否使用JavaScript一次按下多个键?

我正在尝试开发一个JavaScript游戏引擎,我遇到了这个问题:

  • 当我按下SPACE角色跳跃.
  • 当我按下角色向右移动时.

问题是,当我按下右键然后按空格键时,角色跳跃然后停止移动.

我使用该keydown功能来按下键.如何检查是否一次按下多个键?

javascript keydown

158
推荐指数
6
解决办法
13万
查看次数

jquery:keypress,ctrl + c(或类似的一些组合)

我正在尝试在我正在制作的网站上创建快捷方式.我知道我可以这样做:

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)

这可能吗?我试过了它并没有用,我做错了什么.

jquery keypress keydown jquery-events

51
推荐指数
5
解决办法
10万
查看次数

Chrome中的Keydown Simulation通常会触发,但不会触发正确的键

我想在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值?

javascript google-chrome javascript-events

27
推荐指数
2
解决办法
5万
查看次数

在jQuery中触发多个按键和保持事件的方法

寻找一种使用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)

keyboard jquery

12
推荐指数
1
解决办法
2万
查看次数

div按钮上的JQuery click()不会触发

我试图模仿用户点击我无法控制的代码的网站.我尝试与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

其中许多答案确实单击了按钮,但不会产生与手动单击按钮相同的结果.所以问题似乎不一定是点击按钮本身,而是模仿真正的点击.

html javascript css simulation jquery

8
推荐指数
1
解决办法
3139
查看次数

获取Javascript中所有当前按下的键的列表

在Javascript中,我想写一个返回,当前按下所有键列表的功能(这样我可以允许用户创建自定义快捷键.)有什么办法来获得在Javascript中所有当前按下键的列表?

javascript

6
推荐指数
2
解决办法
7329
查看次数