当我尝试运行我的代码时,整个屏幕都很模糊,当我按下向上/向下键时,控制台显示IME input key skip and call event.preventDefault(), event.stopPropagation()
。
我的部分代码:
HTML:
<body onLoad="func_onLoad()" onunload="func_onUnload()">
<input id="username" type="text" onkeydown="onkeydown_input(this)" class="input username" placeholder="Username" required/>
<input id="password" type="password" onkeydown="onkeydown_input(this)" class="input password" placeholder="Password" required/>
</body>
ime.js:
var username = null;
var password = null;
var currentIMEObj = null;
function func_onLoad(){
alert("func_onLoad begin...");
username = new IMEShell_Common();
username.inputboxID = "username";
username.inputTitle = "username";
username.inputDescription = "Please enter your username";
username.onKeyPressFunc = onKeyCallback_username;
username.context = this;
username.setBlockSpace(true);
password = new IMEShell_Common();
password.inputboxID = "password";
password.inputTitle = "password";
password.inputDescription = "Please enter your password";
password.onKeyPressFunc = onKeyCallback_password;
password.context = this;
password.setBlockSpace(true);
document.getElementById("username").focus();
username.onShow();
}
function func_onUnload() {
alert("func_onUnload begin...");
if(username)
username.onClose();
if(password)
password.onClose();
}
function onkeydown_input(obj){
alert("onkeydown_input");
var EKC = event.keyCode;
switch(EKC){
case(29460)://Up key
if(obj.id == "username"){
document.getElementById("username").blur();
username.onClose();
}
else if(obj.id == "password"){
document.getElementById("username").focus();
username.onShow();
currentIMEObj = username;
}
break;
case(29461)://Down key
if(obj.id == "username"){
document.getElementById("password").focus();
password.onShow();
currentIMEObj = password;
}
else if(obj.id == "password"){
document.getElementById("password").blur();
password.onClose();
}
break;
case(29443)://Enter key
if(obj.id == "username"){
username.onShow();
currentIMEObj = username;
}
else if(obj.id == "password"){
password.onShow();
currentIMEObj = password;
}
break;
case(88)://return
break;
case(45)://exit
return;
break;
}
}
function onKeyCallback_username(key,str,id) {
alert("CALLBACK onKeyCallback ===================: " + key + " ID = " + id + " STR = " + str);
switch (key) {
case (29443): // Enter Key
alert("ENTER");
break;
case (88): //return
alert("RETURN");
break;
case (45): //exit
alert("EXIT");
break;
}
}
function onKeyCallback_password(key,str,id) {
alert("CALLBACK onKeyCallback ===================: " + key + " ID = " + id + " STR = " + str);
switch (key) {
case (29443): // Enter Key
alert("ENTER");
break;
case (88): //return
alert("RETURN");
break;
case (45): //exit
alert("EXIT");
break;
}
}
任何人都知道为什么用户名不会被关注,即使func_onLoad()方法中有document.getElementById("username").focus();
以及调用event.preventDefault()
的原因。
任何帮助表示赞赏!在此先感谢!!!
答案 0 :(得分:0)
是的,我们在开发过程中遇到了类似的问题。如果您独立处理应用程序中的焦点,则会出现此问题。因此,如果您的应用程序使用独立框架来处理切换焦点和活动状态,则IME将无法正常工作,因为它会与您自己的应用程序的焦点发生冲突。唯一的解决方案是创建自己的IME。
答案 1 :(得分:0)
我不知道问题出现的原因,但我认为andrea-f的回答并不完全正确。 你的代码没问题。我知道因为我有同样的问题。我认为问题出在模拟器中。
我写了非常类似的代码,就像你的一样,我遇到了和你一样的问题(相同的错误,灰暗的屏幕等),但是当我在真实设备上测试应用程序时(我的三星智能F6400)它工作得很好。
在真实设备上试用您的应用。这是我给你的建议。
祝你好运!