TinyMCE 4 插入内容();行为不正确
TinyMCE 4 insertContent(); not behaving correctly
我得到了一个 TinyMCE 编辑器实例 运行。并且
tinyMCE.activeEditor.insertContent('<div class="row"><div class="col-md-6"></div><div class="col-md-6"></div></div><div class="row"><div class="col-md-12"></div></div>');
这应该生成:
<div class="row"><div class="col-md-6"></div><div class="col-md-6"></div></div><div class="row"><div class="col-md-12"></div></div>
但它生成的不是那个:
<div class="row"> </div>
<div class="row"> </div>
当我一步步做的时候:
tinyMCE.activeEditor.insertContent('<div class="row"> ');
tinyMCE.activeEditor.insertContent('<div class="col-md-6"> </div>');
tinyMCE.activeEditor.insertContent('<div class="col-md-6"> </div>');
tinyMCE.activeEditor.insertContent(' </div>');
tinyMCE.activeEditor.insertContent('<div class="col-md-12"> </div></div>');
这让我更加好奇
<div class="row">
<div class="col-md-6">
<div class="col-md-6">
<div class="col-md-12"> </div>
</div>
</div>
</div>
我错过了什么???我应该使用另一个标签而不是 insertContent 吗?
尝试inyMCE.execCommand也不行。
tinyMCE.execCommand('mceInsertContent',false,'<div class=row><div class=col-md-6></div><div class=col-md-6></div></div><div class=row><div class=col-md-12></div></div>');
insertContent
用于纯文本。 setContent
适用于 HTML。但是 setContent
一次只能添加一层 HTML。解决这个问题的方法是使用 dom.add()
。这将允许您创建一个父元素并允许您向其添加子节点。
HTML
<form>
<textarea></textarea>
</form>
JS
//get inner element 'col-md-6'
//number is how many elements
function getColMd6(number){
var html = "";
for(var i = 0; i < number; i++){
html += '<div class="col-md-6"></div>';
}
return html;
}
//get inner element 'col-md-12'
function getColMd12(number){
var html = "";
for(var i = 0; i < number; i++){
html += '<div class="col-md-12"></div>';
}
return html;
}
tinymce.init({
selector: 'textarea'
});
//Last parameter lets you specify extra inner html
tinymce.activeEditor.dom.add(tinymce.activeEditor.getBody(), 'div', {class: 'row'}, getColMd6(2));//or just plain html string at last param
tinymce.activeEditor.dom.add(tinymce.activeEditor.getBody(), 'div', {class: 'row'}, getColMd12(1));//or just plain html string at last param
这是一个工作示例DEMO
我得到了一个 TinyMCE 编辑器实例 运行。并且
tinyMCE.activeEditor.insertContent('<div class="row"><div class="col-md-6"></div><div class="col-md-6"></div></div><div class="row"><div class="col-md-12"></div></div>');
这应该生成:
<div class="row"><div class="col-md-6"></div><div class="col-md-6"></div></div><div class="row"><div class="col-md-12"></div></div>
但它生成的不是那个:
<div class="row"> </div>
<div class="row"> </div>
当我一步步做的时候:
tinyMCE.activeEditor.insertContent('<div class="row"> ');
tinyMCE.activeEditor.insertContent('<div class="col-md-6"> </div>');
tinyMCE.activeEditor.insertContent('<div class="col-md-6"> </div>');
tinyMCE.activeEditor.insertContent(' </div>');
tinyMCE.activeEditor.insertContent('<div class="col-md-12"> </div></div>');
这让我更加好奇
<div class="row">
<div class="col-md-6">
<div class="col-md-6">
<div class="col-md-12"> </div>
</div>
</div>
</div>
我错过了什么???我应该使用另一个标签而不是 insertContent 吗?
尝试inyMCE.execCommand也不行。
tinyMCE.execCommand('mceInsertContent',false,'<div class=row><div class=col-md-6></div><div class=col-md-6></div></div><div class=row><div class=col-md-12></div></div>');
insertContent
用于纯文本。 setContent
适用于 HTML。但是 setContent
一次只能添加一层 HTML。解决这个问题的方法是使用 dom.add()
。这将允许您创建一个父元素并允许您向其添加子节点。
HTML
<form>
<textarea></textarea>
</form>
JS
//get inner element 'col-md-6'
//number is how many elements
function getColMd6(number){
var html = "";
for(var i = 0; i < number; i++){
html += '<div class="col-md-6"></div>';
}
return html;
}
//get inner element 'col-md-12'
function getColMd12(number){
var html = "";
for(var i = 0; i < number; i++){
html += '<div class="col-md-12"></div>';
}
return html;
}
tinymce.init({
selector: 'textarea'
});
//Last parameter lets you specify extra inner html
tinymce.activeEditor.dom.add(tinymce.activeEditor.getBody(), 'div', {class: 'row'}, getColMd6(2));//or just plain html string at last param
tinymce.activeEditor.dom.add(tinymce.activeEditor.getBody(), 'div', {class: 'row'}, getColMd12(1));//or just plain html string at last param
这是一个工作示例DEMO