有没有办法检测JavaScript当前是否存在关键字?
我知道"keydown"事件,但这不是我需要的.按键后一段时间,我希望能够检测到它是否仍然按下.
PS最大的问题似乎是,在一段时间后,密钥开始重复,启动keydown和keyup事件,如恶魔.希望只有一个简单的isKeyDown(key)函数,但如果没有,则需要克服/解决这个问题.
我正在构建一个应用程序,我希望能够单击由DIV表示的矩形,然后使用键盘通过列出键盘事件来移动该DIV.
而不是在文档级别使用事件监听器来处理那些键盘事件,我可以在DIV级别监听键盘事件,也许是通过给予键盘焦点?
这是一个简化的示例来说明问题:
<html>
<head>
</head>
<body>
<div id="outer" style="background-color:#eeeeee;padding:10px">
outer
<div id="inner" style="background-color:#bbbbbb;width:50%;margin:10px;padding:10px;">
want to be able to focus this element and pick up keypresses
</div>
</div>
<script language="Javascript">
function onClick()
{
document.getElementById('inner').innerHTML="clicked";
document.getElementById('inner').focus();
}
//this handler is never called
function onKeypressDiv()
{
document.getElementById('inner').innerHTML="keypress on div";
}
function onKeypressDoc()
{
document.getElementById('inner').innerHTML="keypress on doc";
}
//install event handlers
document.getElementById('inner').addEventListener("click", onClick, false);
document.getElementById('inner').addEventListener("keypress", onKeypressDiv, false);
document.addEventListener("keypress", onKeypressDoc, false);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在单击内部DIV时,我尝试给它焦点,但随后的键盘事件总是在文档级别而不是我的DIV级别事件侦听器中被选中.
我是否只需要实现特定于应用程序的键盘焦点概念?
我应该补充一下,我只需要在Firefox中使用它.
我是Android的新手.我已经花了两个小时搜索.无论我尝试使用软键盘都不会显示给我EditText
.我简单地创建它:
EditText editText = (EditText)findViewById(R.id.editText);
Run Code Online (Sandbox Code Playgroud)
我试过了:
editText.requestFocus();//i tried without this line too
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
Run Code Online (Sandbox Code Playgroud)
和:
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus)
{
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
});
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
Run Code Online (Sandbox Code Playgroud)
我试着将这一行放入AndroidManifest.xml
文件中:
android:windowSoftInputMode="stateVisible|adjustResize"
Run Code Online (Sandbox Code Playgroud)
但一切都是徒劳的.它永远不会显示.我错过了什么?
我使用此代码来确定键盘的大小:
- (void)keyboardWillChange:(NSNotification *)notification {
NSDictionary* keyboardInfo = [notification userInfo];
NSValue* keyboardFrameBegin = [keyboardInfo valueForKey:UIKeyboardFrameBeginUserInfoKey];
CGRect keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue];
}
Run Code Online (Sandbox Code Playgroud)
我在模拟器中运行它.
问题是,因为iOS 8这将不会给出正确的值,如果键盘建议已启动或者如果我将它们向下推,则会得到不同的(不正确的)值.
如何获得键盘的确切大小,包括键盘建议?
使用jQuery,如何在单击链接时模拟(触发?)KeyPress?例如,当用户单击以下链接时:
<a id="clickforspace" href="#">Click Here</a>
Run Code Online (Sandbox Code Playgroud)
然后,通过单击链接,就好像他们按下键盘上的"空格键"一样.
这样的事情,我假设:
$("#clickforspace").click(function(e) {
e.preventDefault();
//... Some type of code here to initiate "spacebar" //
});
Run Code Online (Sandbox Code Playgroud)
关于如何实现这一点的任何想法?
是仅仅是我,还是其他人发现MacOS上的左右箭头键对于编辑文本来说异常缓慢?
与我的Windows机器相比,使用左/右箭头键定位光标似乎在Mac上需要两倍的时间.向上/向下箭头似乎足够快,但左/右箭头只是爬行.我在终端中注意到它最多,编辑最近使用的命令,我现在注意到它在浏览器形式的文本中.
我可以设置Mac偏好来加快对这些键的响应吗?
这就是我的尝试方式
<script type="text/javascript">
$(document).ready(function(){
$('#dateIn,#dateOut').click(function(e){
e.preventDefault();
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
但输入仍然是'推出'iphone的键盘
ps:我想这样做,因为我使用datepicker插件作为日期
我真正想知道的是它是硬件问题还是软件问题.我可以通过USB将我的Android手机插入电脑,并将其作为硬件键盘.我不想在计算机上安装任何东西,我希望android的行为像标准硬件.
编辑:澄清我想为android编写一个程序/库,使设备能够完全模拟普通键盘,以便操作系统将其报告为标准键盘设备,它可以在BIOS或键盘的任何其他地方工作作品.
我正在使用CGEventCreateKeyboardEvent
并需要知道CGKeyCode
要使用的值.
具体来说,我是关键的密钥代码Command.文档提供了其他键的示例:zis 6
,shiftis 56
.
某处必须有Mac虚拟键码列表?
keyboard ×10
javascript ×4
android ×2
ios ×2
jquery ×2
macos ×2
arrow-keys ×1
cgkeycode ×1
cocoa-touch ×1
events ×1
input ×1
ios8 ×1
iphone ×1
keycode ×1
objective-c ×1
performance ×1
usb ×1