Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何清除粘贴上的输入?一个小小的所见即所得编辑器_Javascript_Jquery_Editor_Wysiwyg_Paste - Fatal编程技术网

Javascript 如何清除粘贴上的输入?一个小小的所见即所得编辑器

Javascript 如何清除粘贴上的输入?一个小小的所见即所得编辑器,javascript,jquery,editor,wysiwyg,paste,Javascript,Jquery,Editor,Wysiwyg,Paste,嘿,我的朋友们 我已经编写了一个示例代码,该代码应该在粘贴时清除HTML代码,但它并没有按预期工作。每次粘贴都会复制,粘贴不起作用 以下是JSFIDLE: 非常感谢您的帮助:)新版本: 关于setTimeout(),您是对的,不知道粘贴事件延迟。 现在,我在FF上看到,document.execCommand()有点问题,所以我对它进行了很多简化(不再关注,execCommand): 这个怎么样: 不再使用setTimeout()。 我还添加了keydown,因为它对我来说听起来更好;)如果愿

嘿,我的朋友们

我已经编写了一个示例代码,该代码应该在粘贴时清除HTML代码,但它并没有按预期工作。每次粘贴都会复制
,粘贴不起作用

以下是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);                
});