【问题标题】:jquery: Windows Google Chrome does not trigger event in iframejquery:Windows Google Chrome 不会在 iframe 中触发事件
【发布时间】:2011-03-08 10:13:58
【问题描述】:

所以,我正在使用已设置语法等的 WYSIWYG 编辑器。我的任务是为跨程序添加复制和粘贴功能。我的代码在 Ubuntu 上的 Google Chrome、Ubuntu 和 Windows 上的 Firefox 中工作,但在 Windows 上的 Chrome 中不工作。

我已将问题归结为基本问题。当发送粘贴命令(通过 Ctrl + V)事件时,我立即将焦点更改为隐藏的、可内容编辑的 iframe,并在那里触发事件。然后我等待它冒泡,然后处理解析和粘贴。

this.pasteOperation = function(event, controller) {
     this._cutpastearea.getEditable().focus().trigger(event);
     setTimeout(function() { controller.clipboardControl().handlePaste(); }, 1);
},

(getEditable 获取 iframe 的 contenteditable 部分)

现在,如果我显示 iframe,并禁用设置的超时,我发现焦点已被抓取,但没有粘贴任何内容。如果我继续手动粘贴它,然后调用该函数,一切正常。

那么为什么这不会触发事件呢?

编辑:也在Chromium Issues 提出了这个问题。这似乎是 iframe 唯一的问题。

【问题讨论】:

    标签: javascript jquery google-chrome


    【解决方案1】:

    找到了解决办法。而不是调用触发器,调用这个:

    $.fn.forwardEvent = function(event) {
        this.each(function() {
            if (this.dispatchEvent) {
                if (event.originalEvent) {
                    event = event.originalEvent
                }
                try {
                    this.dispatchEvent(event);
                } catch(error) {
                    $(this).trigger(event);
                }
            }
            else {
                $(this).trigger(event);
            }
        });
        return this;
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 2014-01-01
      相关资源
      最近更新 更多