[英]Sanitizing paste event using jQuery in contentEditable div
我正在尝试清理contentEditable
div 中的粘贴。 也就是说,代码应该如下所示:
$('#content').bind('paste',function(e)
{
// Ensure pasted markup is valid
});
理想情况下,我将能够解析粘贴的文本并以适合该站点的方式重新格式化它,但我不知道如何执行此操作。
或者,我可以轻松地粘贴为纯文本(而不是 HTML),但我也不知道如何执行此操作。
我对弹出一个带有文本区域的框的解决方案不太满意,要求用户粘贴到该文本区域,然后将文本放入前一个光标位置的内容中。 我知道如何做到这一点,但想避免它。
而且我对仅仅通过使用e.preventDefault()
阻止用户粘贴感到非常不舒服。
我已经能够使用 rangy javascript 库实现这一点,该库允许我在清理内容后保存和恢复插入符号位置。
https://github.com/timdown/rangy
在 chrome 和 safari 中测试。
$("#content").on('paste', function(){
sanitize();
});
function sanitize(){
setTimeout(function(){
var savedSelection = rangy.saveSelection();
$("#content *").removeAttr("style"); // Do your parsing here.
rangy.restoreSelection(savedSelection);
}, 0);
}
大多数浏览器都没有直接的方法来访问在进入 DOM 之前粘贴的内容。 然而,有一种相当复杂的方法可以做到这一点,它只适用于由键盘触发的粘贴。 在这里看到我的回答:
一旦内容已经在现场,你能不能验证一下怎么办? 让内容粘贴进去,先保存原来的内容,如果新的内容无效,就用旧的替换回来。 这只是一个理论,但我现在也必须进行实验。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.