我试图覆盖peranhacms中的默认tinymce,如此处建议Configure / override Piranha CMS html editor so as not to add  's to html 我花了大约一个小时试图解决这个问题。关于这个问题有很多资源,但无法让它发挥作用。
以下是我的tinymce.init的样子。
<script type="text/javascript" src="~/res.ashx/areas/manager/content/js/ext/tiny_mce/tinymce.min.js"></script>
<script type="text/javascript">
tinymce.init({
mode: 'specific_textareas',
editor_selector: "editor",
apply_source_formatting: false,
cleanup_on_startup: false,
trim_span_elements: false,
cleanup: false,
convert_urls: false,
force_br_newlines: true,
force_p_newlines: false,
remove_linebreaks: false,
convert_newlines_to_brs: false,
forced_root_block: '',
inline_styles : true,
entity_encoding: 'raw',
verify_html: false,
//forced_root_block: false,
validate_children: false,
remove_redundant_brs: false,
fix_table_elements: false,
entities: '160,nbsp,38,amp,60,lt,62,gt',
plugins: [
"autoresize autolink code hr paste piranhaimage link"
],
width: "100%",
height: "340",
autoresize_min_height: 340,
@if (File.Exists(Server.MapPath("~/areas/manager/content/css/editor.css"))) {
<text>content_css: "@Url.Content("~/areas/manager/content/css/editor.css")",</text>
}
toolbar: "bold italic underline | bullist numlist hr | formatselect removeformat | cut copy paste | link piranhaimage | code",
paste_auto_cleanup_on_paste: false,
paste_postprocess: function (pl, o) {
// remove extra line breaks
o.node.innerHTML = o.node.innerHTML.replace(/ /ig, " ");
alert("a1");
},
cleanup_callback: 'my_cleanup_callback',
});
function my_cleanup_callback(type, value) {
alert("a2");
switch (type) {
case 'get_from_editor':
// Remove characters
value = value.replace(/ /ig, ' ');
alert("a3");
break;
case 'insert_to_editor':
case 'submit_content':
case 'get_from_editor_dom':
case 'insert_to_editor_dom':
case 'setup_content_dom':
case 'submit_content_dom':
default:
break;
}
return value;
}
</script>
这里是我用来粘贴到tinyice textarea
的html示例<div class="catelog-box">
<img src="images/dance.png" alt="dine">
<div class="cat-detail">
<h2>Dance</h2>
<p>Dis purus arcu etiam auctor risus aliquam mid turpis eu vel, nunc rhoncus lacus natoque ridiculus...</p>
</div>
</div>
它是如何在浏览器源中查找:
我发出提醒以检查paste_postprocess
和my_cleanup_callback
是否实际开火,但事实并非如此。而且我仍然有html。
我试图设置cleanup: true
和paste_auto_cleanup_on_paste: true
,但它没有帮助解雇paste_postprocess
和my_cleanup_callback
您如何解决&amp; nbsp问题?
答案 0 :(得分:6)
只需添加entity_encoding: 'raw'
即可解决问题。
答案 1 :(得分:1)
TinyMCE是一个选项和设置的怪物,但鉴于您提供的链接和,您已使用TinyMCE is adding   instead of the space when using the word paste中的清理方法,您是否尝试过设置:< / p>
paste_auto_cleanup_on_paste: true
因为这是在您引用的示例中设置的。除了那个猜测,我不知道为什么事件没有解雇。
祝你好运
哈坎
答案 2 :(得分:1)
以下代码清除了内容中的所有内容
tinymce.init({
selector: "textarea",
invalid_elements :'strong,bold,b,em,br,span,div,p,img,a,table,td,th,tr,header,font,body,h,h1,h2,h3,h4,h5',
invalid_styles: 'color font-size text-decoration font-weight',
menubar: false,
toolbar:false,
statusbar:false,
forced_root_block : "",
cleanup: true,
remove_linebreaks: true,
convert_newlines_to_brs: false,
inline_styles : false,
entity_encoding: 'raw',
entities: '160,nbsp,38,amp,60,lt,62,gt',
});}
答案 3 :(得分:1)
我知道这是旧的,但是将这个CSS属性添加到编辑器的元素可以解决问题。这不是一个小问题,这就是可编辑div的工作方式。
#editor {
white-space: pre-wrap;
word-wrap: break-word;
}
干杯
答案 4 :(得分:0)
我通过为defaultContent选项添加零宽度空间('​'
)来解决此问题。
TinyMCE代码似乎用不间断空格周围的段落标签替换了空白内容。
通过添加零宽度空间,它在UI中显示为空白,但是阻止了这种后处理。
例如:
let options = {
// [...]
defaultContent: '​'
// [...]
}