Javascript 如何清除粘贴上的输入?一个小小的所见即所得编辑器
嘿,我的朋友们 我已经编写了一个示例代码,该代码应该在粘贴时清除HTML代码,但它并没有按预期工作。每次粘贴都会复制Javascript 如何清除粘贴上的输入?一个小小的所见即所得编辑器,javascript,jquery,editor,wysiwyg,paste,Javascript,Jquery,Editor,Wysiwyg,Paste,嘿,我的朋友们 我已经编写了一个示例代码,该代码应该在粘贴时清除HTML代码,但它并没有按预期工作。每次粘贴都会复制,粘贴不起作用 以下是JSFIDLE: 非常感谢您的帮助:)新版本: 关于setTimeout(),您是对的,不知道粘贴事件延迟。 现在,我在FF上看到,document.execCommand()有点问题,所以我对它进行了很多简化(不再关注,execCommand): 这个怎么样: 不再使用setTimeout()。 我还添加了keydown,因为它对我来说听起来更好;)如果愿
,粘贴不起作用
以下是JSFIDLE:
非常感谢您的帮助:)新版本: 关于
setTimeout()
,您是对的,不知道粘贴事件延迟。
现在,我在FF上看到,document.execCommand()
有点问题,所以我对它进行了很多简化(不再关注,execCommand):
这个怎么样: 不再使用
setTimeout()
。
我还添加了keydown,因为它对我来说听起来更好;)如果愿意,您可以将其删除。
这是:
- 取#content的内容
- 删除textarea内容并集中精力
- 将内容从#内容插入文本区域
- 替换#内容的内容以防被删除或替换(这是我测试的一部分,我不知道
现在是否相关$self.html($content);
- 在内容末尾用插入符号集中注意力
placeCaretAtEnd()
源于我对其进行了一点修改。不幸的是,您的示例不起作用。它将内容放在文本区域,而不是可编辑的div中:(textarea只是一个助手,它应该关注“粘贴”并清除输入,然后将内容放回div。新代码也不起作用:(脚本应该做的是清理剪贴板内容。粘贴时,文本区域应抓住焦点。浏览器将内容粘贴到文本区域。100毫秒后,文本区域中清理的内容应复制回可编辑分区。
$editor.on('paste, keydown', function() {
var $self = $(this);
setTimeout(function(){
var $content = $self.html();
$clipboard.val($content);
},100);
});
$editor.on('paste, keydown', function() {
var $self = $(this),
$content = $self.html();
$clipboard.val('').focus();
document.execCommand('insertHTML', false, $content);
$self.html($content);
placeCaretAtEnd($self);
});