丰富的文字贴的失败火狐当使用OnPaste
-
25-09-2019 - |
题
我写的扩展 nicEdit 这将导致所有贴丰富的文本将粘贴为纯文本。我的代码完美的作品在铬和IE7,但未在火狐3(而且,据推测,Firefox2,但出于不同的原因-值得注意的是,缺乏一个糊的事件)。
奇怪的部分是,我的代码作品完美的文本时被粘贴是纯文本。这似乎窒息的任何格式。这里所涉及的步骤的火狐版本,这是发上粘贴(事件发射的,但贴的失败):
- 获得当前的选择和范围
- 创建一个新的div
contentEditable = true
, 和增加它对DOM - 移动插入的新div
- 设置一个超时得到HTML从新div,清理它,并把它放进入旧的选择(其中我抓住了步骤1)
- return true(允许原贴完整的、粘贴内容纳入新的div)
似乎所有这些步骤执行,但膏永远不会发生。我没有得到任何错误,在控制台(只是一个警告有关的分析错误上 text-align
-该宣言是下降了),并没有什么可疑的发生,当我试与萤火虫(除了我的贴似乎是空的,这是该问题)。
警告让我想到那Firefox可能只是无法分析内容,我已经粘贴,但是没有我的拦截代码,我能够粘贴到nicEditor就好了。
我已经上传了我的火狐-唯一的测试脚本 http://www.ryankinal.com/paste/firefox.html -这是代码,用于执行从火狐,我完全扩展。
一对夫妇的事情要注意:
- 我已经采取了相当数量的灵感来自介绍贴的插件
- 我使用一些jQuery元的选择
- 那也似乎是某些修改
Function.prototype
在nicEdit,我找到奇怪 - 我可以用另一个丰富的文本编辑器,但考虑这一运动在调试
- 代码链接上述目的只是为FIREFOX
解决方案
问题是,贴的事件是只太晚,将插入在某些浏览器,包括火狐。你就可以做到插入标记-重新定向的技巧,如果你拦截快捷键粘贴(Ctrl+V, Cmd+V 和 移位+插入)和忽略的粘贴的事件,但这意味着糊触发的上下文和编辑菜单不包括在内。我觉得这是你能做的最好,但是。
不隶属于 StackOverflow