【问题标题】:Tinymce node content changedTinymce 节点内容已更改
【发布时间】:2016-04-09 10:39:23
【问题描述】:

我试图在每次更改节点时触发一个事件。

基本上我需要在空行(节点)不再为空时触发它。

在文档中我发现只有更改方法,但不会每次都立即触发。

还有其他我可以听的活动吗?

【问题讨论】:

    标签: javascript events tinymce rte mutation-observers


    【解决方案1】:

    您可以在 tinymce 编辑器 dom 上分配突变观察者并监听变化。使用 tinymce 配置参数 setup 并添加一个 init 处理程序以从一开始就观察 dom:

    setup : function(ed) {
    
        ed.on('init', function(e){
            // MutationObserver
            var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
            if (typeof MutationObserver != 'undefined')
            {   
                // select the target node
                var targets = ed.getDoc().querySelector('body');
    
                // create an observer instance
                var observer = new MutationObserver(function(mutations) {
                    mutations.forEach(function(mutation) {
                        // do your magic here!!!
                    });    
                });
    
                // configuration of the observer:
                var config = { attributes: true, childList: true, characterData: true }
    
                // pass in the target node, as well as the observer options
                observer.observe(targets, config);
            }
            // fallback for older browsers
            else
            {
                $(ed.getBody()).bind('DOMNodeChanged', function(e) {
                   // do your magic here !
                });
            }
        });
    }
    

    您可能需要根据需要配置观察者。 这是一个关于突变观察者的有用页面:https://addyosmani.com/blog/mutation-observers/。 不要使用突变事件,因为它们已被弃用。

    您可以使用突变事件作为不支持观察者的浏览器的后备(参见上面的代码)。

    【讨论】:

    • 谢谢。跨浏览器兼容性如何?
    • mutation 观察者是 HTML5 功能,适用于所有较新的浏览器。在此处查看有关此问题的表格:caniuse.com/#feat=mutationobserver
    • 这有点问题。我需要至少适用于 IE9 的东西。
    • 在这种情况下,您将不得不使用 dom 突变事件作为后备(请参阅我更新的答案)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多