Javascript 使用JQuery向iframe添加事件处理程序

Javascript 使用JQuery向iframe添加事件处理程序,javascript,jquery,events,iframe,keydown,Javascript,Jquery,Events,Iframe,Keydown,我想给iframe分配一个keydown事件处理程序。类似于纯JS的东西: document.getElementById('iframe_id').contentWindow.addEventListener('keydown',funcName, true); 我试过: $(document.getElementById('iframe_id').contentWindow).keydown( function() { // my func }); 但是它不起作用。。请帮忙 函数取

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

document.getElementById('iframe_id').contentWindow.addEventListener('keydown',funcName, true);
我试过:

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

但是它不起作用。。请帮忙

函数取代了document.getElementById的需要

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

contentWindow
iframe
窗口
对象。您需要的是
iframe
文档

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

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

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

这对我来说很有效:

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

对此要小心。我相信这将导致相当大的内存泄漏,即使在您更改其URL后,iframe的内容仍将保留在内存中。可能的重复