【问题标题】:Adding event handler to an iframe using JQuery使用 JQuery 将事件处理程序添加到 iframe
【发布时间】:2010-10-07 15:53:17
【问题描述】:

我想为 iframe 分配一个 keydown 事件处理程序。类似于纯JS的东西:

document.getElementById('iframe_id').contentWindow.addEventListener('keydown',funcName, true);

我试过了:

$(document.getElementById('iframe_id').contentWindow).keydown( function() {
   // my func
});

但它不起作用..请帮助!

【问题讨论】:

标签: javascript jquery events iframe keydown


【解决方案1】:

contentWindowiframewindow 对象。你想要iframedocument 代替:

$(document.getElementById('iframe_id').contentWindow.document).keydown(function() {
    // my func
});

请注意,我不确定 jQuery 如何对来自其他窗口/框架的元素做出反应。

【讨论】:

  • 对此保持警惕。我相信这会导致相当大的内存泄漏,即使您更改其 URL,iframe 的内容仍将保留在内存中。
【解决方案2】:

请记住:据我所知,如果 iframe 内容是跨域的,这将永远不会起作用。您最终会遇到权限错误:http://... 的权限被拒绝以从http://... 获取属性 HTMLDocument.nodeType。浏览器将父子 dom 权限限制在同一个域中。

【讨论】:

    【解决方案3】:

    $函数代替了对document.getElementById的需要

    $('iframe_id').contentDocument.keydown(function() {
       // logic
    });
    

    【讨论】:

      【解决方案4】:

      这对我有用:

      $('#iframe_id').contents().keydown(function() {
          // my func
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-16
        • 2012-01-18
        • 2021-02-26
        • 2018-08-24
        • 2011-07-03
        • 2014-02-07
        • 1970-01-01
        相关资源
        最近更新 更多