uni-app 编辑器禁用状态下,调用editorContext实例下的api后,输入框依然会聚焦并弹出软键盘

uni-app 编辑器禁用状态下,调用editorContext实例下的api后,输入框依然会聚焦并弹出软键盘

开发环境 版本号 项目创建方式
Windows Windows 10 专业版 版本号 21H1 安装日期 ‎2020/‎11/‎7 操作系统内部版本 19043.1165 序列号 005788743753 体验 Windows Feature Experience Pack 120.2212.3530.0 HBuilderX

测试过的手机:

  • iphone6 plus
  • oppo k3

示例代码:

editorContext.format('bold')  

操作步骤:

(

format(e) {

let {  
    name,  
    value,  
    isapi  
} = e.target.dataset  
if (!name) return  
if (isapi) {  
    this.editorCtx.insertDivider()  
} else {  

    this.editorCtx.format(name, value)  

}  

},

)

更多关于uni-app 编辑器禁用状态下,调用editorContext实例下的api后,输入框依然会聚焦并弹出软键盘的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

你好,我也遇到相似的问题,请问你解决了吗?

更多关于uni-app 编辑器禁用状态下,调用editorContext实例下的api后,输入框依然会聚焦并弹出软键盘的实战教程也可以访问 https://www.itying.com/category-93-b0.html


你好,请问你解决这个问题了吗?

这是一个已知的编辑器行为问题。当编辑器处于禁用状态(disabled="true")时,调用 editorContext 的 API(如 formatinsertDivider 等)仍会触发输入框聚焦和软键盘弹出。

原因分析: editorContext 的 API 调用本质上是操作富文本编辑器的底层内容,这些操作会隐式激活编辑器的可编辑状态,即使组件本身设置了 disabled 属性。在移动端,激活可编辑区域会自动触发软键盘。

临时解决方案:

  1. 条件拦截:在调用 editorContext 方法前,手动检查编辑器的禁用状态:

    if (!this.editorDisabled) {
        this.editorCtx.format(name, value);
    }
    
  2. 状态同步:在禁用编辑器时,同时清空 editorContext 实例的引用,并在启用时重新获取:

    // 禁用时
    this.editorCtx = null;
    
    // 启用时
    this.editorCtx = uni.createSelectorQuery().select('#editor').context();
回到顶部