0

我使用以下代码拦截 iframe 中的所有点击事件:

$(doc.body).on("click", function(e) {
    if (e.from === undefined) {
        e.preventDefault();
        e.stopPropagation();
        interceptEvent(e);
    }
}

发送一条 XML 消息(带有原始 e.target的interceptEvent(e)路径)该消息被以下函数捕获(在另一个浏览器上):

if (document.createEvent) { //Netscape
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent(value, false, true);
    evt.from = 'trigger'; //trigger for recognize a XML programmatically event
    return !$('.browser').contents().find(path)[0].dispatchEvent(evt);
}

此函数的目标是复制事件。为了避免循环(拦截在其他浏览器上也处于活动状态),我添加到dispatchedEvent属性“from”。

尽管如此,e.form总是undefined,我错在哪里?

4

1 回答 1

1

似乎你使用 jQuery,对吧?

jQuery 事件没有来自的属性,仅规范化以下事件属性:

  • 目标
  • 相关目标
  • 第X页
  • 第Y页
  • 哪一个
  • 元密钥

如果您想通过事件传递自定义属性,您需要使用 jQuery 本身触发您的自定义事件。http://api.jquery.com/category/events/event-object/或访问原始事件event.originalEvent

于 2013-01-10T15:18:21.410 回答