Javascript 将tinyMCE内容与原始内容进行比较
如何判断tinyMCE内容是否已更改?但是,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.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>