我需要能够允许用户粘贴到可编辑的div中(通过用户选择的任何内容:右键单击并粘贴,快捷键等),但我想丢弃格式并仅采用纯文本。
我无法使用textarea,因为如果由用户启动的事件应用,div将允许基本格式(粗体和斜体)。
onbeforepaste事件看起来很有希望,但根据quirksmode,支持是如此有限以致无法使用。
tyia任何建议
答案 0 :(得分:1)
这很棘手,但并非不可能。您可以做的是非常复杂,并且可以在Firefox 2 +,IE 5.5+和最近的WebKit浏览器(如Safari 4或Chrome)(旧版本未经测试)中使用。 TinyMCE和CKEditor的最新版本在基于iframe的编辑器上使用了这种技术:
请注意,这仅适用于键盘粘贴事件,而不适用于上下文或编辑菜单中的粘贴。 paste
事件会更好,但是当它触发时,将插入符号重定向到textarea(至少在某些浏览器中)为时已晚。
答案 1 :(得分:1)
对于 Ctrl + v 我检查了keyup上可编辑div的内容。您可以修改该事件中的内容。我正在使用nicedit文本编辑器。
这对于右键单击的粘贴不起作用 - >糊。
对于“粘贴”,我必须使用settimeout
修改内容。
.addEvent('paste', function(e) {
setTimeout(function(){
if(condition){
//modify content
}
},350);
});
答案 2 :(得分:1)
也可以使用javaScript进行攻击。希望这有帮助
我创建了一个示例here
<div contentEditable="true" id="clean-text-div"> </div>
<div id="clean-btn"> Clean Me</div>
<div id="message"> paste html content and clean background HTML for pure text</div>
$("#clean-btn").click(function(){
$("#clean-text-div").text($("#clean-text-div").text());
$("#message").text("Your text is now clean");
});
答案 3 :(得分:0)
您是否尝试过“粘贴”或“输入”等事件?然后你可以使用正则表达式来跳转所有的html标签
$(document).bind('paste', function(e){ alert('pasting!') })
http://www.hscripts.com/scripts/JavaScript/remove-html-tag.php
关于粘贴事件的讨论你还应该阅读:
Catch paste input