수천 번 구글링을했지만 아무도 Tinymce가 기본적으로 일반 텍스트로 붙여넣고 “텍스트로 붙여 넣기”버튼을 클릭하지 않고 서식을 제거하는 방법에 대한 완전한 솔루션을 제공하지 않습니다.
그것을 구현하는 방법에 대한 아이디어가 있습니까? 또는 “텍스트로 붙여 넣기”버튼을 자동으로 활성화하는 방법은 무엇입니까?
감사합니다
답변
편집 : 이 솔루션은 버전 3.x 용이며 4.x 버전의 경우 @Paulo Neves의 답변을 읽으십시오.
문제는 붙여 넣기 플러그인이 모든 붙여 넣기에서 일반 텍스트 붙여 넣기를 자동으로 재설정한다는 것입니다. 따라서 우리가해야 할 일은 다시 설정하는 것입니다. 다음 코드가 도움이 될 것입니다.
tinyMCE.init({
...
oninit : "setPlainText",
plugins : "paste"
....
});
setPlainText의 정의
function setPlainText() {
var ed = tinyMCE.get('elm1');
ed.pasteAsPlainText = true;
//adding handlers crossbrowser
if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
ed.onKeyDown.add(function (ed, e) {
if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
ed.pasteAsPlainText = true;
});
} else {
ed.onPaste.addToTop(function (ed, e) {
ed.pasteAsPlainText = true;
});
}
}
이제는 항상 평범 할 것입니다.
답변
tinyMCE 3X 또는 4X의 경우 상황이 약간 변경되었습니다. 이제 이것을 할 수 있고 잘 작동합니다.
tinymce.init({
plugins: "paste",
paste_as_text: true
});
답변
이 코드로이 문제를 해결했습니다.
tinyMCE.init({
...
plugins : "paste",
paste_text_sticky : true,
setup : function(ed) {
ed.onInit.add(function(ed) {
ed.pasteAsPlainText = true;
});
}
....
})
답변
이 문제를 직접 만났고 TinyMCE 3.4.2부터 간단하게 다음을 수행 할 수 있음을 발견했습니다.
paste_text_sticky: true,
paste_text_sticky_default: true
… 좋았습니다.
답변
가장 쉬운 방법은 다음과 같습니다.
tinymce.init({
...
paste_as_text: true,
plugins: "paste",
...
});
답변
사용하는 것이 더 낫지 않습니까?
var ed = tinyMCE.activeEditor;
대신에:
var ed = tinyMCE.get('elm1');
답변
참고로 TinyMCE는 붙여 넣기 플러그인의 기본 옵션으로 구현하여이를 개선했습니다. 더 많은 정보 : http://www.tinymce.com/wiki.php/Plugin:paste
그러나 여전히 완벽하지는 않습니다. 따라서 여기에 모든 HTML을 차단하는 스크립트가 있습니다.
// Paste
paste_auto_cleanup_on_paste : true,
paste_remove_spans: true,
paste_remove_styles: true,
paste_retain_style_properties: false,
paste_preprocess : function(pl, o)
{ // Replace <div> with <p>
o.content = o.content.replace(/<div>/gi, "<p>");
o.content = o.content.replace(/<\/div>/gi, "</p>");
o.content = o.content.replace(/<\r\n/gi, "\n");
o.content = o.content.replace(/<\n\n/gi, "\n");
o.content = o.content.replace(/<\n\n/gi, "\n");
// Replace empty styles
o.content = o.content.replace(/<style><\/style>/gi, "");
o.wordContent = true;
},
paste_postprocess : function(pl, o)
{ //console.log(o.node.innerHTML);
var ed = pl.editor, dom = ed.dom;
// Remove all tags which are not <p> or <br>
tinymce.each(dom.select('*', o.node), function(el)
{ if (el.tagName.toLowerCase() != "p" && el.tagName.toLowerCase() != "br")
{ dom.remove(el, 1); // 1 = KeepChildren
console.log(el.tagName);
}
dom.setAttrib(el, 'style', '');
});
},
출처 :
http://www.tinymce.com/forum/viewtopic.php?pid=60121#p60121
