jquery - 在 jQuery 中触发 keyup 事件

标签 jquery events triggers listener

我正在创建的 Chrome 扩展程序注入(inject)的代码存在严重问题。本质上,我需要一个 keyup 事件监听器来拾取某个键,但我似乎无法获取它。

这是我要注入(inject)的代码(请注意,有很多冗余,因为我尝试了很多方法来让它触发事件监听器,一旦找到有效的代码,我就会清理它) .

function simulateKey(iElement) {
    $( iElement ).focus();

    var e = jQuery.Event("keyup");
    e.which = 37;
    e.keyCode = 37;
    e.charCode = 0;

    $( iElement ).keyup(function () {
        console.log("keyup element");
    });

    $( iElement ).trigger(e);

    var f = jQuery.Event("keyup");
    f.which = 70;
    e.keyCode = 70;
    f.ctrlKey = true;
    f.shiftKey = true;

    $( iElement ).trigger(f);
    $ ( document ).trigger(f);
    $ ( window ).trigger(f);    
}

调用此函数时,输入元素将获得焦点,并且“keyup element”将打印到控制台。但是,当调用此函数并且我为 keyup 事件设置了事件监听器断点时,代码永远不会中断。

当我在专注于输入字段的同时按下键盘上的一个键并且为 keyup 事件设置了事件监听器断点时,源 jquery.min.js 中出现中断,并且“(e)”突出显示,这是此函数调用的参数:“f=v.handle=function(e)”...请注意,通常只会发生一个断点,但如果我已经调用了我的函数,则会发生 2 个断点,因为我'我在 keyup 事件上生成 console.log。

非常感谢任何帮助,谢谢!

最佳答案

使用$.Event()创建请求的事件,然后使用.trigger()

演示:JSnippet

代码:

$(function() {
    var $iElement = $('#logit');
    $iElement.keyup(function(e) {
      console.log(e.which);
      $(this).val(e.which);
    });
    simulateKey($iElement);
});


function simulateKey($iElement) {
    var e = $.Event('keyup');
    e.which = 65; // Character 'A'
    $iElement.trigger(e);
}

关于jquery - 在 jQuery 中触发 keyup 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32275716/

相关文章:

JQuery 碰撞无法正常工作

javascript - 使用 blueimp jQuery 文件上传

c# - KeyDown KeySuppress 是否取消 KeyUp 事件?

events - 如何在消息驱动的微服务系统中处理基于多个事件的副作用?

mysql - 如何在表中的任何更改上创建触发器

javascript - 带有css和jquery的下拉菜单的滑动效果

javascript - 在 JavaScript 中为函数创建配置

c# - 取消可观察集合上的集合更改事件

MySQL 插入时触发问题

mysql - MySQL 中的触发器