MutationObserver对象的使用

在IE中,由于input、change、propertychange事件无法监听contenteditable元素内容变化,本文介绍了如何利用MutationObserver对象解决这个问题。通过指定监听的DOM元素和变化触发的回调函数,实现了对可编辑区域内容变动的监听。

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

问题:在对div设置属性 contenteditable="true" 的时候,由于需要对输入的内容变化进行监听,由于在ie中使用 input、change、propertychange等事件进行监听的时候,无法监听到输入内容的变化,所以这里使用了MutationObserver对象来实现。

使用方式如下:

    //ie下无法监听输入变化,使用下面的方法监听
    // 设置observer的配置选项
    var config = { attributes: true, childList: true, subtree: true,characterData:true };
    // 当节点发生变化时的需要执行的函数
    var callback = (mutationsList, observer) => {
        for(var mutation of mutationsList) {
            if (mutation.type == 'childList') {
                this.changeTxt()
            }
            else if (mutation.type == 'attributes') {
                this.changeTxt()                
            } else if(mutation.type == 'characterData'){
                this.changeTxt()              
            }
        }
    };
    // 创建一个observer示例与回调函数相关联
    var observer = new MutationObserver(callback);
    //使用配置文件对目标节点进行观测
    observer.observe(this.$refs.contentEditor, config);

备注:

1、上面代码里面`this.$refs.contentEditor`是需要监听的dom元素,根据实际监听对象来修改。

2、`this.changeTxt()`是监听到文本变化执行的相应函数,根据实际需求来修改。

MutationObserver属性传送门:点这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值