一劳所怡的监听解决方案。

113 阅读1分钟

最近在老项目重构时,遇到一个Vue混用的问题,场景是这样的,原先的一个地址组件用的是jQuery 写的,最后地址的赋值也是获取DOM,但页面新写的用Vue,然后我想监听被赋值DOM的Vue值。尝试过使用Vue监听$refs,但监听不到改变。

还尝试用过addlister 也是Fail,于是请求大佬,找了一个监听DOM树对象的函数- MutationObserver,此函数了得,下面附上代码

function  initIframeChange(elemIfram)  {
    if (window.MutationObserver || window.webkitMutationObserver) {
        // chrome
        var callback = function(mutations) {
            mutations.forEach(function(mutation) {
                if(mutation.attributeName === 'src'){
                    iframeSrcChanged(mutation.oldValue,mutation.target.src,mutation.target);
                }
            });
        };
        if (window.MutationObserver) {
            var observer = new MutationObserver(callback);
        } else {
            var observer = new webkitMutationObserver(callback);
        }
        observer.observe(elemIfram, {
            attributes: true, //监听属性值
            attributeOldValue: true //是否监听老数据值
        });
    }
}

第一次写笔记,不太熟练,希望多多体谅,后续附上该对象的API。