jquery:Windows谷歌浏览器不会在iframe中触发事件

时间:2010-06-25 18:40:15

标签: javascript jquery google-chrome

所以,我正在使用已经设置过的Grammar等的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问题。

1 个答案:

答案 0 :(得分: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;
};