我在我的应用程序中安装了 django-tinymce 和各种模型,带有HTMLField
.
我正在尝试在 django 管理员中生成某种“粘贴为纯文本”功能。当用户执行 ctrl + v / cmd + v / 右键单击 > 粘贴等操作时,我希望从 MS Word、HTML 标记和几乎所有其他内容中删除格式。
我可以看到很多人在谈论它,但我似乎无法得到任何工作。作为 django-tinymce,我TINYMCE_DEFAULT_CONFIG
在settings.py
.
我以为我让它工作了——我已经覆盖了基本管理模板以包含一个具有以下功能的 js 文件(我不记得该功能归功于谁——可能有人在 SO)——
function tinymcePastePlainText() {
var ed = tinyMCE.get(0);
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_DEFAULT_CONFIG = {
'plugins': "'paste'",
'paste_text_sticky': "true",
'paste_retain_style_properties': "",
'oninit': "tinymcePastePlainText",
#...Further config
}
这似乎是我上次查看时想要做的,但它现在停止工作 - 浏览器中的调试似乎表明该tinymcePastePlainText()
函数从未运行(尽管它已加载)。
我尝试了各种其他方法,例如简单地将我的配置设置为 -
TINYMCE_DEFAULT_CONFIG = {
'plugins': "'paste'",
'paste_auto_cleanup_on_paste': 'true',
'paste_remove_styles': 'true',
'paste_remove_styles_if_webkit': 'true',
'paste_strip_class_attributes': 'true',
#....further config
}
(这似乎没有改变任何东西)。或者
TINYMCE_DEFAULT_CONFIG = {
'plugins': "'paste'",
'setup': "function(ed) { ed.onInit.add(function(ed) {ed.pasteAsPlainText = true;});",
#....further config
}
我尝试从单独的 js 文件中加载上述函数,然后在我的配置中包含函数名称 -'setup': 'pasteAsPlainTextFuncion()'
但这也不起作用。
我似乎在这方面花了很长时间,但我并没有真正取得任何进展——我不知道为什么我的函数被调用,现在不是——浏览器的调试工具没有发现任何错误。