Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Apply onClick to Iframe

Is there any way to "encapsulate" an Iframe with some other element to simulate onClick? I know the Iframe doesn't support events but I need to track clicks from my website that are leaving thru the Iframe.

Thanks!

like image 408
TheGateKeeper Avatar asked Feb 20 '23 21:02

TheGateKeeper


1 Answers

If the frame contains page from the same domain (does not violate same-origin policy), you can interact directly with its document:

<script type="text/javascript">
window.onload = function() {
    var oFrame = document.getElementById("myframe");
    oFrame.contentWindow.document.onclick = function() {
        alert("frame contents clicked");
    };
};
</script>

If it contains external page then you're out of luck - no way to do what you want for obvious security reasons. Although all the contents is visually parts of the same page, frames coming from different domains must stay separate in terms of scripting. Otherwise any page could e.g. create a hidden iframe loading your webmail and steal your session cookie from it. All the data is accessible to the user, but it should not be accessible to the page author.

like image 180
Shadow Wizard Hates Omicron Avatar answered Feb 23 '23 09:02

Shadow Wizard Hates Omicron