1

I have a function that should be called on EVERY click on the page.

So I tried to add an EventListener to the document:

 document.onclick = function() { /* Do Something */ }; 

but the problem is that there are many frames on my website

(I know frames are evil and not supported in HTML 5)

So I tried to add an EventListener to every frame:

window.onload = window.setInterval(  
    function() {  
        frames = getFrames();  
        for(var i=0;i<frames.length;i++) 
            frames[i].addEventListener("click", function () {
                //Do Something 
            }
    });
}, 50);

function getFrames() {
    var frameset = document.getElementsByTagName("FRAMESET")[1];
    var frame = frameset.getElementsByTagName("FRAME");
    return frame;
}

My HTML looks like this:

<frameset rows="100px,30px,*,5%">
    <frame src="topbar.php">
    <frame src="toolbar.php">
    <frameset cols="25%,40%,*%">
        <frame src="content.html>
        <frame src="content.html">
        <frame src="content.html">
    </frameset>
    <frame src="endbar.php">
</frameset>

Now working with:

window.onload = window.setInterval(
    function() {
        frames = getFrames();
        for(var i=0;i<frames.length;i++) 
            frames[i].contentDocument.onclick = 
                function() {
                    //Do Something
                    }
        };
}, 50);
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129

1 Answers1

1

according to me the only way to solve your problem is do somthing like this post:
How do I handle a click anywhere in the page, even when a certain element stops the propagation?
and import the jquery libraries, if you don't have it allready

Community
  • 1
  • 1
mautrok
  • 961
  • 1
  • 17
  • 41