【问题标题】:problems with paste event and iframe on internet explorer 7Internet Explorer 7 上的粘贴事件和 iframe 问题
【发布时间】:2013-05-15 14:06:42
【问题描述】:

我有一个基于 JqueryRTE (code.google.com/p/lwrte) 的 WYSIWYG 编辑器,它使用 iframe 作为主要对象并启用了几种格式化方式。我仍然需要清理粘贴的文本,因为用户倾向于从 MS Word 或 Openoffice.org 文档中粘贴格式化文本,并且不支持该格式的大部分内容。 我使用以下函数将“粘贴”事件附加到 iframe 文档:

 function bindEvent(el, eventName, eventHandler) {
                    if (el.addEventListener) {
                        el.addEventListener(eventName, eventHandler, false);
                    } else if (el.attachEvent){
                        el.attachEvent('on' + eventName, eventHandler);
                    }
                }

并按如下方式调用它:

bindEvent(iframe.contentWindow.document, 'paste', function () { cleanPastedText(); });

它在 FF 和最新的 IE 版本上运行良好,而我无法在 IE7 上调用事件处理程序。我用调试器研究了bindEvent,它执行了attachEvent。我什至尝试将处理程序绑定到主窗体,但仍然没有结果。您能否指导我,可能的原因是什么,如果将文本粘贴到输入或文本区域以外的元素,是否有可能使用 IE7 捕捉“粘贴”事件?是否有可能该事件实际上在 iframe 子元素中的某处被触发,但没有传播到父节点? iframe内部html大致如下:

<html><head></head><body>here comes some text and some pasted text and other blahblah</body></html>

【问题讨论】:

    标签: javascript events iframe internet-explorer-7 paste


    【解决方案1】:

    我发现,在旧版本的 IE (quirksmode - cut,copy,paste

    此外,事件不会在 iframe 内部文档之外传播,因此,在我的情况下,我必须将事件侦听器分配给

    或 iframe 文档的 元素。结果代码行:
    bindEvent(iframe.contentWindow.document.getElementsByTagName("body")[0], 'paste', function () { cleanPastedText(); });
    

    由于后者已经完成,它就像一个魅力。希望这个答案对其他 SO 用户有用。

    【讨论】:

      猜你喜欢
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      相关资源
      最近更新 更多