Adding event handler to an iframe using JQuery

2019-01-09 10:37发布

I want to assign a keydown event handler to an iframe. Something similar to the pure JS:

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

I tried:

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

But it does not work.. Please help!

4条回答
做个烂人
2楼-- · 2019-01-09 11:08

Just something to keep in mind: this will never work, as far as I understand, if the iframe content is cross-domain. You'll end up with permissions errors: Permission denied for http://... to get property HTMLDocument.nodeType from http://.... Browsers limit parent child dom permissions to same domain.

查看更多
▲ chillily
3楼-- · 2019-01-09 11:12

The $ function replaces the need for document.getElementById

$('iframe_id').contentDocument.keydown(function() {
   // logic
});
查看更多
唯我独甜
4楼-- · 2019-01-09 11:14

This worked for me:

$('#iframe_id').contents().keydown(function() {
    // my func
});
查看更多
【Aperson】
5楼-- · 2019-01-09 11:21

contentWindow is the iframe's window object. You want the iframe's document instead:

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

Note that I am not sure how jQuery reacts to elements from other windows/frames.

查看更多
登录 后发表回答