I am working on something which requires me to add mouse/keyboard event listeners to the document on document load.
document/window.addEventListener() worked well until I came across Frameset/frames/iframes.
I did some workaround, like iterating through all the frames of frameset and added event-listeners to them.
Then I realized frames are loaded dynamically, after DOM. So I've done something like this:
bindListenersToFrame: function(element){
var $ = domUtils.jQuery;
$(element).ready(function(){
if(element.tagName == "FRAMESET" || element.tagName == "BODY"){
for(var i=0; i < element.children.length; i++){
domUtils.bindListenersToFrame(element.children[i]);
}
}
if(element.tagName == "FRAME" || element.tagName == "IFRAME"){
$('iframe').load(function(){
domUtils.addListener(element);
if(element.contentDocument.documentElement){
for(var i=0; i < element.contentDocument.documentElement.children.length; i++){
domUtils.bindListenersToFrame(element.contentDocument.documentElement.children[i]);
}
}
});
}
});
}
Above method is recursive in nature and domUtils is just a object with methods like "addListener".
Any help would be greatly appreciated. Thank you.