Javascript 将tinyMCE内容与原始内容进行比较

Javascript 将tinyMCE内容与原始内容进行比较,javascript,jquery,tinymce,Javascript,Jquery,Tinymce,如何判断tinyMCE内容是否已更改?但是,tinymce将每个放在单独的一行中。我想我只需要检查一下按键就可以了,但这并不能说明最终是否有什么改变 tinymce.init({selector: "#content"}); if($.trim(tinymce.get('content').getContent()) != $.trim($('#content').val())){alert('changed');} 我要做的(如果我得到了您的要求)是将原始值存储在一个变量中,然后在TinyM

如何判断tinyMCE内容是否已更改?但是,tinymce将每个
放在单独的一行中。我想我只需要检查一下按键就可以了,但这并不能说明最终是否有什么改变

tinymce.init({selector: "#content"});
if($.trim(tinymce.get('content').getContent()) != $.trim($('#content').val())){alert('changed');}
我要做的(如果我得到了您的要求)是将原始值存储在一个变量中,然后在TinyMCE提供的页面上,确定当前内容是否等于原始内容。 所以


如果这不起作用,请尝试使用返回布尔值的方法来确定内容是否已更改。

旧问题,但答案可能有用,因为TinyMCE现在仍在使用

问题是,当您将HTML内容设置为TinyMCE编辑器时,实际上修改了原始内容。例如,HTML属性可能是反向的。它不会更改渲染结果的任何内容,但字符串比较不起作用

所以我所做的只是将原始HTML放在一个不可见的TinyMCE编辑器中,然后在这个编辑器和我的“真实”编辑器之间进行比较


tinymce.init({
选择器:“文本区域#原始内容”
});

谢谢,但这只会显示“未更改”。如
document.getElementById('content').value在键入时不会更改,只有
tinymce.get('content').getContent()
tinymce.get('content').getContent()在键入时会更改吗?然后将它与保存原始值的变量(我已经更新了代码)进行比较。是的,它改变了,但是太多了。正如我在我的OP中指出的,即使用户不更改HTML,TinyMCE也会自动在每个
处添加一组行空格,因此即使呈现的HTML没有更改,也会使用您的解决方案进行更改。我已更新了答案,请检查这些解决方案是否有效。我建议使用
isDirty
方法,因为它更精确。我正要测试isDirty。另外,类似于
setup:function(ed){var original=tinymce.get('content').getContent();}
的方法可能会起作用,然后只需将
original
tinymce.get('content').getContent();}进行比较即可
// Store the original value
var original = document.getElementById('content').value;

function myCustomOnChangeHandler(inst)
{
    // Determine if the current content of the textarea is equal to
    // the original content
    if (original.localeCompare(inst.getBody().innerHTML) === 0) {
        console.log("Hasn't changed.");
    } else {
        console.log("Changed.");
    }
}

// Initialize TinyMCE
tinymce.init({
    selector : '#content',
    onchange_callback : "myCustomOnChangeHandler"
});
<script type="text/javascript">
    tinymce.init({
       selector: 'textarea#originalContent'
    });
</script>
<textarea id="originalContent" style="display:none;"></textarea
<script type="text/javascript">
    tinymce.init({
        theme: 'modern',
        height: 500,
        width: 950,
        selector: 'textarea#tinymcePopup',
        setup: function (ed) {
            ed.on("change", function () {
                contentChanged(ed);
            })
        }
    });

    function contentChanged() {
        var originalContent = tinymce.get('originalContent').getContent();
        var editableContent = tinymce.get('tinymcePopup').getContent();
        if (originalContent != editableContent) {
            console.log('changed');
        }
        else {
            console.log('not changed');
        }
    }
</script>
 <textarea id="tinymcePopup"></textarea>