当前位置:编程学习 > JAVA >>

高分求助:两个页面有时候无法输入中文,求高手...如何调试?[

场景:
一个系统,有两个页面无法切换中文输入法,也就是无法输入中文.这种情况不是每次发生,而是偶尔发生,并且重现次数很小.
我仔细查看了页面,页面中存在将键盘按键屏蔽掉操作,譬如
<script language="JScript" for="document" event="onkeydown">
if(event.ctrlKey && event.keyCode == 78) {
event.returnValue = false;
}...下面还有很多.
但是我注释了这样的代码,而且也清楚了浏览器缓存,
遗憾的是:有时候,还是无法输入中文.
现在的问题是:我应该如何调试代码?如何找出为何不能输入中文.
更加确切的说:如何捕捉事件?捕捉任意事件:如键盘点击.
我想知道:但切换输入法的时候,到底发生了什么,使得中文无法输入?
谢谢

使用技术:
extjs,jquery,easy-ui
struts1,ie8浏览器 --------------------编程问答-------------------- 帮顶一下。 --------------------编程问答-------------------- 调试的话,在事件中alert一下,看有没进入到事件中~ --------------------编程问答-------------------- 可能是切换中文的按键和开发环境的快捷键有冲突,改一下快捷键试试看 --------------------编程问答-------------------- css 可以设置 ime-mode:auto/active 你试试 --------------------编程问答-------------------- 谢谢各位...
http://topic.csdn.net/u/20110711/08/7b975c00-a370-497c-b6bc-02660a73adb0.html?seed=1368443032&r=74326357#r_74326357

暂时想不出什么点子啊.....
如何页面一启动,就开始调试呢?
见鬼的是:这个bug不是每次都出现,要看人品才会出来.... --------------------编程问答--------------------
引用 5 楼 xblue3 的回复:
谢谢各位...
http://topic.csdn.net/u/20110711/08/7b975c00-a370-497c-b6bc-02660a73adb0.html?seed=1368443032&r=74326357#r_74326357

暂时想不出什么点子啊.....
如何页面一启动,就开始调试呢?
见鬼的是:这个bug不是每次都出现,要看人品才会出来....

看人品的问题就不是我等能够解决的问题了~ --------------------编程问答-------------------- 文本框只能输入字母或数字不能输入中文 
style=" ime-mode:disabled;" --------------------编程问答-------------------- onkeydown对于中文输入的支持本来就有问题。
可以改成onkeyup或者onkeypress。 --------------------编程问答-------------------- 是不是注释掉了一切对键盘事件的捕捉呢,还是仅仅注释掉了键盘事件触发的代码 --------------------编程问答--------------------
引用楼主 xblue3 的回复:
场景:
一个系统,有两个页面无法切换中文输入法,也就是无法输入中文.这种情况不是每次发生,而是偶尔发生,并且重现次数很小.
我仔细查看了页面,页面中存在将键盘按键屏蔽掉操作,譬如
<script language="JScript" for="document" event="onkeydown">
if(event.ctrlKey && event.keyCode == ……


无法输入是指输入框无法输入还是切换中文输入法失败? 不太明白你为什么捕捉这个键盘事件 不过应该不影响中英文切换吧 只有个别客户机是这样的么 还是普遍这样 找找规律 --------------------编程问答-------------------- 可以在页面上按F12,Ctrl+B(单击选中元素)看看是不是Css设置错了,如果没错的话,那可能是你写的和系统键冲突了。 --------------------编程问答--------------------
引用 10 楼 bearkin 的回复:
无法输入是指输入框无法输入还是切换中文输入法失败? 不太明白你为什么捕捉这个键盘事件 不过应该不影响中英文切换吧 只有个别客户机是这样的么 还是普遍这样 找找规律


系统已经开发好几年了,有很多框架和代码,捕捉键盘事件是为了屏蔽一些热键(如F11全屏等),
中英文切换,也有问题,google输入法,没有一点反应,键盘输入,全是英文.
shift+ctrl没有一点反应 --------------------编程问答-------------------- ctrl空格呢.. 禁止全屏还可以理解 禁止恩ctrl+shift有什么意义?

http://www.cnblogs.com/unique/archive/2009/04/17/1438065.html

这个是keycode列表 你可以尝试用键盘右边的shift和ctrl试验看看 总之确定是否是JS的问题 --------------------编程问答-------------------- 还有这等怪事 。。。时好时坏的问题难搞,是不是操作系统的问题? --------------------编程问答-------------------- 以下给点个人思路
-----------------------------------------
给document.onkeydown 增加事件的两种方式,
一是<script language="JScript" for="document" event="onkeydown"> ... </script>
二是document.onkeydown = xx; // xx是一个事件函数

通过方式二定义的事件是最先有效的,这一点可以在页面最后增加以下代码行验证
<script language="JScript">
alert( document.onkeydown);
</script>


但是,通过方式一定义的事件是最终有效的,这一点可以通过在页面增加以下代码验证。同时这种方法可以看到document.onkeydown 的函数到底是什么(通过alert( document.onkeydown )显示的是函数源码)。
<input onclick="javascript:alert( document.onkeydown );" type="button" value="查看document.onkeydown "/>


如果不方便修改HTML源码,在IE中,上面一句可以改为在地址栏执行,javascript:alert( document.onkeydown );"

所以,楼主可以通过以上两种查看方式查看document到底想增加哪些onkeydown 事件,以及最终的事件是什么。

另外楼主可以在页面的最后面增加以下代码
<script language="JScript" for="document" event="onkeydown">
</script>

就是一个空的事件实体,用以屏蔽document.onkeydown的事件,查看是不是因为定义了document.onkeydown事件而影响了输入法切换。

--------------------------------------------
以上实验在IE7下面。

--------------------编程问答-------------------- microsoft script debugger
用于ie下调试js
安装这个来调试下吧,和firebug的功能差不多。使用方法网上有。 --------------------编程问答-------------------- 恩.谢谢各位,这个问题很久了.
我发现,按shift+ctrl,输入法的图标是会改变的.
就是说,可以切换输入法....

但是Google输入法的中文,中文提示列表却没有出现(输入拼音,会有一行列表,提供选择的.)
输入文本框的,统统是字母...

头痛了 --------------------编程问答--------------------
引用 10 楼 bearkin 的回复:
切换中文输入法失败

切换中文输入法,是没有问题的. --------------------编程问答-------------------- 这个貌似不是问题来的。。

    很多时候都是这样的,怎么输都是英文,就算切出中文图标,但是就是输不了。。但是过一分。又OK了。。。

    特别是用firefox的时候,输汗字,出现这种情况,你打开firebug控制台,下面会出现很多错误。。。 --------------------编程问答--------------------

<script language="javascript">

function switchIME(enable){
var root = document.getElementById("mead");
var show = document.getElementById("show"); 
    

if(enable){
show.innerHTML = "IME has opened.";  
root.style.cssText = "ime-mode:auto;width:300px;height:400px;";
}else{
show.innerHTML = "IME has closed.";  
root.style.cssText = "ime-mode:disabled;width:300px;height:400px;";
}

}


</script>

<textarea id="mead" style="ime-mode:disabled;width:300px;height:400px;" >

</textarea>
<br/>
<br/>
<div id="show">hello you.</div>
<br/>
<input type="button" onclick= "switchIME(true);" value="开启中文输入" />
<input type="button" onclick= "switchIME(false);" value="关闭中文输入" />


我使用上面代码重演了这个bug.
确定我们系统的输入法问题是和css这个样式
ime-mode:disabled
出现的情况一模一样.可以切换输入法,但是无法输入中文.
======
于是我用Eclipse全文搜索,ime-mode,
发现没有这个字符串.
这个bug是偶尔出现的.
jquery和jquery easy UI中... --------------------编程问答-------------------- 没遇到过。帮顶。 --------------------编程问答--------------------
引用 8 楼 feg545 的回复:
onkeydown对于中文输入的支持本来就有问题。
可以改成onkeyup或者onkeypress。

这个有可能。。。 --------------------编程问答-------------------- 只能帮顶一下了 --------------------编程问答-------------------- 终于解决了这个bug...真是高深啊... --------------------编程问答-------------------- 楼主  我也遇到这问题,能打答案分享下吗 --------------------编程问答-------------------- 这么高深的bug也能解决 楼主真是高啊,但是能否共享一下解决方案呢。。 --------------------编程问答--------------------
引用 24 楼  的回复:
终于解决了这个bug...真是高深啊...


什么问题引起的?
本来我像说的比如安装了搜狗或者拼音输入法,它和其他软件自带的快捷键会有冲突,就切换不了了。比如千千静听和搜狗就有冲突。打不了中文。 --------------------编程问答-------------------- 我的问题决绝了,是应为编码上的问题 --------------------编程问答-------------------- 是不是输入框控件本身不支持中文呀。 --------------------编程问答-------------------- 遇到了同样的问题注视掉ime-mode ok了 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 怎么解决的?
楼主分享一下? --------------------编程问答-------------------- 不知道,帮顶一下
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,