问题
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!
回答1:
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.
回答2:
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.
回答3:
The $ function replaces the need for document.getElementById
$('iframe_id').contentDocument.keydown(function() {
// logic
});
回答4:
This worked for me:
$('#iframe_id').contents().keydown(function() {
// my func
});
来源:https://stackoverflow.com/questions/549488/adding-event-handler-to-an-iframe-using-jquery