代码之家  ›  专栏  ›  技术社区  ›  strager

将事件附加到父代码中的iframe元素

  •  4
  • strager  · 技术社区  · 15 年前

    在我的应用程序中,我有一个iframe,我想让它访问一些在iframe之外更改应用程序状态的功能。此功能必须由 keydown iframe内部或外部的事件。

    在iframe中,我有以下代码:

    window.init = function (api) {
        api.bind(document);
    };
    

    外部应用程序执行如下操作:

    iframe.contentWindow.init({
        bind: function (element) {
            $(element).bind('keydown', function () {
                debugger;
            });
        }
    });
    

    有了这个, init 是正确调用的,但是 键盘按下 从不调用事件处理程序。我做错什么了?

    2 回复  |  直到 15 年前
        1
  •  4
  •   idmean    11 年前

    如果尝试以这种方式绑定事件:

        $(element).bind('keydown', function () {
            alert("hello");
        });
    

    jquery将尝试遍历父级中的元素 window ,但如果您执行以下操作,您的问题将得到解决:

        $(iframe.contentWindow.document.body).find(element).bind('keydown', function () {
            alert("hello");
        }); 
    
        2
  •  0
  •   strager    15 年前

    问题是iframe的某些部分已经附加了 keydown 处理程序,它停止事件的传播,阻止事件到达文档并阻止调用处理程序。实际绑定没有问题。