[前端] 页面新增 wangEditor 出现的 The given range isn‘t in document.

在AngularJS项目中使用wangEditor时遇到一个问题,点击新增富文本按钮后,控制台显示'The given range isn't in document.'警告。此警告导致除最新创建的富文本外,其他富文本编辑器失效,无法正常修改文本。经分析,问题出在使用`+=`操作符动态添加HTML,导致父DOM重新绘制所有子DOM,使wangEditor绑定的DOM对象失效。解决方案是避免直接更新innerHTML,确保wangEditor的内部DOM对象不被破坏,从而保持编辑器功能正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

使用 AngularJS 的时候,我在页面弄一个按钮可以新增 wangEditor 富文本,但是点了新增之后发现控制台出现: The given range isn't in document. 警告,其实这个警告问题还是很严重的,因为我页面上新增多个富文本时候,只有最新一个富文本的控件有效,而其他富文本都失效了,并且我使用

wangEditor.txt.html();

获取文本时候,发现除了最新一个可以修改,其他都不能修改,所以追踪 html() 看了看源码:

从 txt 原型进去:

    html: function html(val) {
        var editor = this.editor;
        var $textElem = editor.$textElem;
        var html = void 0;
        if (val == null) {
            html = $textElem.html(); // 这个地方继续查看
            
            html = html.replace(/\u200b/gm, '');
            return html;
        } else {
            $textElem.html(val);
            editor.initSelection();
        }
    }

查看到 $textElem.html() 这个地方:

    html: function html(value) {
        var elem = this[0];
        if (value == null) {
            return elem.innerHTML; // 这里是直接拿 dom 的 innerHTML
        } else {
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值