一、背景
在基于本系列第一篇文章,修复的SAP Webide中文录入异常现象,持续跟踪发现仍有其他方面的问题存在。在正常录入汉字时是没问题,但是在选中部分内容后,想要替换录入汉字时会执行异常导致弹出多个报错提示框,如下图所示:
二、解决步骤
本次修复基于SAP Webide原版压缩版中的ace.js,忽略本系列文章一中的升级包。
需修改的文件路径:WebIDE\plugins\com.sap.webide.orionplugin_1.53.9\webide\resources\sap\watt\ideplatform\plugin\aceeditor\control\lib\ace-noconflict\ace.js
修改后的ace.js文件见:https://download.csdn.net/download/qq_28872573/90539438,也可参考下文自行修复。
2.1、定义全局变量
定义一个Bool类型的全局变量bIsChineseInputting,记录是否正在执行输入法的中文录入操作
var bIsChineseInputting = false; //added by husq on 20250327
2.2、录入汉字过程中打标记
在onCompositionStart、onCompositionUpdate方法中,将标识bIsChineseInputting设置为true。特别注意onCompositionUpdate方法中需要判断inComposition字段,因为正常录入字母也会触发此方法,加判断用以避免干扰正常录入字母的情况。
//onCompositionStart方法开头追加
bIsChineseInputting = true //added by husq on 20250327
//onCompositionUpdate方法开头追加
if(inComposition){
bIsChineseInputting = true; //added by husq on 20250327
}
2.3、录入汉字结束触发更新操作
在onCompositionEnd方法结尾手动触发文字更新操作,并将bIsChineseInputting标识重置为false。
/*** added by husq on 20250327 (Begin) ***/
bIsChineseInputting = false;
sendText(text.value);
resetValue();
/*** added by husq on 20250327 (End) ***/
2.4、原更新方法加判断阻止更新
在onInput方法添加bIsChineseInputting标识判断,如果为true代表正在输入汉字中,需return用以阻止更新,并将bIsChineseInputting标识重置为false。
/*** added by husq on 20250327 (Begin) ***/
if (bIsChineseInputting){
bIsChineseInputting = false;
return;
}
/*** added by husq on 20250327 (End) ***/
三、效果展示
在完成上述修改后,重启SAP Webide后,录入汉字终于彻底正常了。
👍点赞,您的支持是我创作的动力!
⭐️收藏,您的青睐是我前行的方向!
✏️评论,您的意见是我成长的财富!