如何在IE,Firefox和Chrome中检测转义按键?下面的代码适用于IE和警报27
,但在Firefox中它会发出警报0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
Run Code Online (Sandbox Code Playgroud) 我想要一个jquery解决方案,我必须接近,需要做什么?
$('html').bind('keypress', function(e)
{
if(e.keyCode == 13)
{
return e.keyCode = 9; //set event key to tab
}
});
Run Code Online (Sandbox Code Playgroud)
我可以返回false并且它阻止按下回车键,我想我可以将keyCode更改为9以使其成为选项卡但它似乎不起作用.我必须接近,发生了什么事?
在我的三星Galaxy标签4(Android 4.4.2,Chrome:49.0.2623.105)上,我遇到了keyCode始终为229的情况.
我为两种情况设置了一个简单的测试
<div contenteditable="true"></div>
<input>
<span id="keycode"></span>
Run Code Online (Sandbox Code Playgroud)
脚本:
$('div, input').on('keydown', function (e) {
$('#keycode').html(e.keyCode);
});
Run Code Online (Sandbox Code Playgroud)
幸运的是,我可以找到关于此的帖子,但我找不到一个有效的解决方案.有人建议改为使用keyup
或使用该textInput
事件,但只会触发该事件blur
.
现在,最重要的是,默认股票浏览器不会发生这种情况:(
任何帮助,将不胜感激!
更新:如果事实证明这是不可能的,我仍然可以在插入符号之前抓取字符:post
我是Android Studio的新手,我不知道为什么我的工具栏没有按照https://developer.android.com/training/appbar/setting-up所描述的那样显示 我知道已经有一些像我这样的问题了stackoverflow但它们不适用于我的项目.因此,我非常感谢解决这个问题.截图:
java.lang.ClassNotFoundException: android.view.View$OnUnhandledKeyEventListener
at org.jetbrains.android.uipreview.ModuleClassLoader.load(ModuleClassLoader.java:180)
at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:61)
at org.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:118)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.jetbrains.android.uipreview.ModuleClassLoader.loadClass(ModuleClassLoader.java:213)
at android.support.v7.widget.ViewUtils.isLayoutRtl(ViewUtils.java:58)
at android.support.v7.widget.Toolbar.onMeasure_Original(Toolbar.java:1578)
at android.support.v7.widget.Toolbar.onMeasure(Toolbar.java)
at android.view.View.measure_Original(View.java:22071)
at android.view.View_Delegate.measure(View_Delegate.java:80)
at android.view.View.measure(View.java:22035)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure_Original(View.java:22071)
at android.view.View_Delegate.measure(View_Delegate.java:80)
at android.view.View.measure(View.java:22035)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure_Original(View.java:22071)
at android.view.View_Delegate.measure(View_Delegate.java:80)
at android.view.View.measure(View.java:22035)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.java:590)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:343)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:384)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:193)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:544)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$3(RenderTask.java:678)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryDark"> …
Run Code Online (Sandbox Code Playgroud) 我使用KeyDown事件和一些简单的代码,如if (e.KeyCode == Keys.F1)
捕获F1在表单上按下但是如果表单上有一些文本框,或者如果表格上有一些带有Dock Fill的电子表格,则上面的代码变得无用且什么都不做.但是当用户在此表单上按F1时,我想要做一些事情.那么我们如何在整个表单上捕获像F1这样的特定keydown事件.我不想去捕获表单上所有其他控件的KeyDown的路径,并将它们传递给Form进行处理.有没有更清洁的方法来做到这一点?
我想运行一个Android后台服务,它将从主屏幕或手机处于睡眠状态时充当keylistener.这可能吗?
从在线的半相关示例中,我将以下服务放在一起,但得到错误,"onKeyDown未定义为服务类型".这是否意味着如果不重写Launcher就无法完成,或者是否有一些我不知道的东西?
public class ServiceName extends Service {
@Override
public void onCreate() {
//Stuff
}
public IBinder onBind(Intent intent) {
//Stuff
return null;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN) {
switch(keyCode) {
case KeyEvent.KEYCODE_A:
//Stuff
return true;
case KeyEvent.KEYCODE_B:
//Stuff
return true;
//etc.
}
}
return super.onKeyDown(keyCode, event);
}
}
Run Code Online (Sandbox Code Playgroud)
当你从主屏幕输入时,我意识到Android默认为搜索栏,但这只是一个非常特殊的用途.除了我,我真的不希望有人想要这个.我认为,例如,使用相机按钮唤醒手机会很不错.
我想要按下软键盘的任何键.我不想在我的Activity中使用EditView或TextView,必须从我的Activity中的扩展View处理该事件.
我刚试过这个:
1)覆盖onKeyUp(int keyCode, KeyEvent event)
Activity方法.这不适用于softkeybord它只是抓住几个硬键盘.
2)创建我的OnKeyListener
并在我的视图中注册包含注册和工作的OnTouchListener
.这与softkeyboar完全不兼容.
3)覆盖onKeyUp(int keyCode, KeyEvent event)
View方法.如果我设置我的OnKeyListener,如果我没有设置它,这根本不起作用.
4)使用InputMethodManager
对象调用方法showSoftInput
并将其传递给我的View.这对于抬起键盘既不起作用,实际上我不得不打电话toggleSoftInput
; 也没有抓住关键事件.
我只在模拟器中测试过,但我认为这已经足够了.为什么它如此复杂从键盘上取一个简单的键事件?
我的项目目前正在使用,但似乎我已经转移到api 26级 - 修订版26.0.2,我正在努力寻找符号 KeyEventCompat
import android.support.v4.view.KeyEventCompat;
Run Code Online (Sandbox Code Playgroud)
我试图找出使用v7
但它不起作用.任何关于如何使其工作的想法.
使用示例:
case KeyEvent.KEYCODE_TAB:
if (KeyEventCompat.hasNoModifiers(event)) {
handled = arrowScroll(FOCUS_FORWARD);
} else if (KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) {
handled = arrowScroll(FOCUS_BACKWARD);
}
break;
Run Code Online (Sandbox Code Playgroud)
任何关于如何使其工作的想法.
谢谢
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt)
{
//cant capture my TAB?
System.out.print(evt.getKeyChar());
}
Run Code Online (Sandbox Code Playgroud)
在没有使用焦点监听技术的情况下,java gui捕获tab键的最简单方法是什么?