在twitter.com上删除J和K键事件

时间:2011-05-23 17:49:17

标签: javascript krl

我构建了一个扩展twitter.com的浏览器扩展。它打开一个jQuery UI模式窗口,并有一些文本输入。当我输入这些输入时,除J键和K键外,它都有效。这些键是一些自定义Twitter事件的一部分(在推文之间滚动)。我可以得到所有的钥匙,除了那两个外,实际在盒子里打字。

我想知道如何取消绑定这两个键的keypress内容,以便我可以输入这两个字母。关于如何解开它们的任何想法?我已经尝试捕获事件并阻止它的默认...没有帮助。我抓住它并返回真/假,也没有帮助。请告诉我。

3 个答案:

答案 0 :(得分:4)

这听起来与谷歌改变向上和向下箭头键的问题非常类似。 Here is where我在一些帮助之后解决了这个问题。基本上我就这样停止了这个事件(对我来说,它上下,找到你的j和k的密钥代码):

if (event.keyCode == 40 || event.keyCode == 38)  {
    event.cancelBubble = true;
    event.stopPropagation();            
    return false;
}

答案 1 :(得分:3)

Twitter似乎使用jQuery进行事件绑定。在JavaScript控制台中,我们可以检查这些事件:

$(document).data('events').keydown;
$(document).data('events').keypress;
$(document).data('events').keyup;

通过基本的试验和错误,我们可以通过删除这些事件并测试缺少的功能来缩小我们的范围。

// Results in j/k keys no longer moving up/down
$(document).data('events').keypress = [];

这当然是一种破解和削减方法,但对缩小范围很有用。

答案 2 :(得分:1)

当我构建一个浏览器扩展来增强页面时,我在Twitter.com上遇到了与textareas和输入字段相同的问题。通过定位我的扩展程序创建的特定输入和textareas,然后停止传播按键事件,我能够按预期工作。

$("selector-for-inputs-created-by-extension")
    .bind("keypress", function(e) {
        e.stopPropagation();
    });

希望有助于澄清事情。