Javascript 在firefox中使用OnPaste时,富格文本粘贴失败

Javascript 在firefox中使用OnPaste时,富格文本粘贴失败,javascript,firefox,richtextbox,paste,nicedit,Javascript,Firefox,Richtextbox,Paste,Nicedit,我正在编写一个扩展,它将导致所有粘贴的富文本都粘贴为纯文本。我的代码在Chrome和IE7中工作得很好,但在Firefox3中失败(可能还有Firefox2,但原因不同——特别是缺少粘贴事件) 奇怪的是,当粘贴的文本是纯文本时,我的代码可以完美地工作。它似乎被任何格式都阻塞了。以下是Firefox版本中涉及的步骤,在粘贴时触发(事件正在触发,但粘贴失败): 获取当前选择和范围 使用contentEditable=true创建一个新的div,并将其添加到DOM中 将插入符号移动到新的div 设置

我正在编写一个扩展,它将导致所有粘贴的富文本都粘贴为纯文本。我的代码在Chrome和IE7中工作得很好,但在Firefox3中失败(可能还有Firefox2,但原因不同——特别是缺少粘贴事件)

奇怪的是,当粘贴的文本是纯文本时,我的代码可以完美地工作。它似乎被任何格式都阻塞了。以下是Firefox版本中涉及的步骤,在粘贴时触发(事件正在触发,但粘贴失败):

  • 获取当前选择和范围
  • 使用
    contentEditable=true
    创建一个新的div,并将其添加到DOM中
  • 将插入符号移动到新的div
  • 设置一个超时,从新的div中获取HTML,清除它,并将其放入旧的选择中(我在步骤1中获取)
  • 返回true(允许原始粘贴完成,将内容粘贴到新的div中)
似乎所有这些步骤都已执行,但粘贴从未发生。我在控制台中没有收到任何错误(只是与
text align
上的解析错误相关的警告-声明被删除),并且当我使用Firebug进行调试时,没有任何可疑的事情发生(除了我的粘贴看起来是空的,这就是问题所在)

这个警告让我觉得Firefox可能无法解析我粘贴的内容,但如果没有截获代码,我就可以很好地粘贴到nicEditor中

我上传了我的Firefox专用测试脚本-这是Firefox在我的完整扩展中执行的代码

有几件事需要注意:

  • 我从TinyMCE粘贴插件中获得了相当多的灵感
  • 我正在使用jQuery进行元素选择
  • nicEdit中的
    Function.prototype
    似乎也有一些修改,我觉得很奇怪
  • <>我可以使用另一个富文本编辑器,但是在调试时,这是一个练习。
  • 上面链接的代码仅适用于FIREFOX

问题在于粘贴事件太晚,无法在某些浏览器(包括Firefox)中重定向插入符号。如果截取用于粘贴的键盘快捷键(Ctrl+V、Cmd+V和Shift+Insert)并忽略粘贴事件,则可以执行插入符号重定向技巧,但这意味着不包括由上下文和编辑菜单触发的粘贴。不过,我认为这是你能做的最好的了。

我认为情况并非如此。当我粘贴纯文本时,代码可以完美地工作,但在格式化文本时失败。不幸的是,要求粘贴纯文本有点达不到目的。当我上一次研究这个问题时,肯定是这样的,大约一年前。有可能特定类型的粘贴(例如纯文本)可能有效,而富文本可能无效(这不是我观察到的,但后来我没有进行测试),但总的来说,我很确定粘贴事件太晚了。如果你不相信我,请查看CKEditor或TinyMCE源代码。我想这是唯一的解释。你能分享你的代码吗?我也有同样的问题