使用JQuery将事件处理程序添加到iframe

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

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

我试过了:

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

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

contentWindowiframewindow对象。 您想要iframedocument

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

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

需要注意的是:如果iframe内容是跨域的,那么根据我的理解,这将无法工作。 您最终会遇到权限错误: http:// …的权限被拒绝从http:// …获取属性HTMLDocument.nodeType。 浏览器将父子dom权限限制为同一域。

$函数取代了对document.getElementById的需求

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

这对我有用:

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