4

我只能让 keydown 事件在新的 Kindle Fire HD 平板电脑上触发删除和输入键。

我正在使用内置的 Silk 浏览器。我可以在 Google 上看到 keydown 事件被触发。他们是如何让它发挥作用的?

如果我在 Silk 浏览器中访问诸如http://unixpapa.com/js/testkey.html之类的键盘测试网站,它也不会触发。有人有解决方法吗?

$("#simpleSearch_input").keydown(function(evt) {
    alert("keydown");
});
4

1 回答 1

0

您需要使用 'input' 事件而不是 'keyup'

键盘事件(HTML5)的顺序是keydown->keypress->input->keyup。

输入事件将缺少一些 keyup 也传递的属性,例如 keyCode / metaKey/shiftKey/altKey

我用了:

var inputEV = 'oninput' 在窗口中?'输入':'keyup'

在 Silk 浏览器中定义触发我的自动完成调用的事件。

在 jsfiddle 上使用 jQuery 代码来测试它。

(function($){
            $(document).ready(function(){
                var inputEV = 'oninput' in window ? 'input' : 'keyup';
                $('#listen').on(inputEV,function(event){                        
                    $('#show').val($('#show').val()+'\n'+event.type);
                    console.log('--- input event ----');
                    for(var v in event.originalEvent){ 
                        if(event.hasOwnProperty(v)){
                            console.log(v+' |--> '+event[v]);
                        }
                    }
                })
                //just added to see what Silk listens for on the keyup event
                $('#listen').on('keyup',function(event){                        
                    $('#show').val($('#show').val()+'\n'+event.type+' | which --> '+event.which);
                    console.log('--- keyup event ----');
                    for(var v in event.originalEvent){ 
                        if(event.hasOwnProperty(v)){
                            console.log(v+' |--> '+event[v]);
                        }
                    }
                })                  
            });
        })(jQuery);

jsfiddle上的链接:

http://jsfiddle.net/visionmonster/eJJna/embedded/result/

与最初的问题一样,我只能让 Silk 浏览器收听删除/输入的键位

HTML5 规范: http: //www.whatwg.org/specs/web-apps/current-work/#handler-oninput

于 2013-05-14T19:41:57.953 回答