【发布时间】:2011-01-05 20:35:43
【问题描述】:
我正在编写nicEdit 的扩展,这将导致所有粘贴的富文本都被粘贴为纯文本。我的代码在 Chrome 和 IE7 中运行良好,但在 Firefox 3(可能还有 Firefox 2,但原因不同——特别是缺少粘贴事件)中失败。
奇怪的是,当粘贴的文本是纯文本时,我的代码可以完美运行。它似乎窒息任何格式。以下是 Firefox 版本中涉及的步骤,在粘贴时触发(事件正在触发,但粘贴失败):
- 获取当前选择和范围
- 使用
contentEditable = true创建一个新的 div,并将其添加到 DOM 中 - 将插入符号移动到新 div
- 设置超时以从新 div 中获取 HTML,清理它,并将其放入旧选择中(我在第 1 步中抓取)
- return true(允许原始粘贴完成,将内容粘贴到新的 div 中)
似乎所有这些步骤都已执行,但粘贴从未发生。我在控制台中没有收到任何错误(只是与 text-align 上的解析错误相关的警告 - 声明被删除),并且当我使用 Firebug 进行调试时没有发生任何可疑的事情(除了我的粘贴似乎是空的,这就是问题所在)。
这个警告让我觉得 Firefox 可能无法解析我一直在粘贴的内容,但是没有我的拦截代码,我可以很好地粘贴到 nicEditor 中。
我已在 http://www.ryankinal.com/paste/firefox.html 上传了我的 Firefox 专用测试脚本 - 这是 Firefox 从我的完整扩展程序中执行的代码。
需要注意的几点:
- 我从 TinyMCE 粘贴插件中获得了很多灵感
- 我正在使用一些 jQuery 进行元素选择
- nicEdit 中的
Function.prototype似乎也有一些修改,我觉得很奇怪 - 我可以使用另一个富文本编辑器,但将其视为调试练习
- 上面链接的代码仅供 Firefox 使用
【问题讨论】:
-
你能分享你的代码吗?我也有同样的问题
标签: javascript firefox richtextbox paste nicedit