簡體   English   中英

刪除 twitter.com 上的 J 和 K 鍵事件

[英]remove J and K key events on twitter.com

我構建了一個擴展 twitter.com 的瀏覽器擴展。 它打開一個 jQuery UI 模態 window,並有一些文本輸入。 當我輸入這些輸入時,它可以工作,除了 J 和 K 鍵。 這些鍵是一些自定義 Twitter 事件(在推文之間滾動)的一部分。 除了這兩個之外,我可以獲得所有將字母實際輸入框中的鍵。

我想知道如何取消綁定這兩個鍵的keypress內容,以便我可以輸入這兩個字母。 關於如何解除綁定的任何想法? 我已經嘗試捕捉事件並阻止它的默認值......沒有幫助。 我已經抓住它並返回真/假,也沒有幫助。 請告訴我。

這聽起來與我遇到的問題非常相似,谷歌會改變向上和向下箭頭鍵。 這是我在一些幫助后解決它的地方。 基本上我這樣停止了事件(對我來說,它的上下,找到你的 j 和 k 的鍵碼):

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

Twitter 似乎使用 jQuery 進行事件綁定。 從 JavaScript 控制台,我們可以檢查這些事件:

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

通過基本的反復試驗,我們可以通過刪除這些事件並測試缺失的功能,將 scope 縮小到按鍵事件。

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

這當然是一種 hack-and-slash 方法,但對於縮小范圍很有用。

當我構建瀏覽器擴展以增強頁面時,我在 Twitter.com 上遇到了與 textareas 和輸入字段相同的問題。 通過定位我的擴展程序創建的特定輸入和文本區域,然后停止按鍵事件的傳播,我能夠讓一切按預期工作。

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

希望這有助於澄清事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM