Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disable all links inside IFRAME using jQuery

Tags:

jquery

I want to disable all links inside an IFRAME, when people click on those link, alert would popup.

Here is what I have so far, but the jQuery does nothing. Not sure what I did wrong.

<iframe id='templateframe' name='templateframe' src="templates/template<?php echo $templateID; ?>/login.html"></iframe>

$(document).ready(function(){       
        $('#templateframe').contents().find('a').click(function(event) {
            alert("demo only");

            event.preventDefault();

        }); 
});

Thanks in advance.

like image 749
Shadow_boi Avatar asked Jan 24 '11 00:01

Shadow_boi


3 Answers

I would expect that $(document).ready executes before the content of the iframe has loaded. Try using the onload attribute for the iframe instead.

like image 131
Mads Mogenshøj Avatar answered Nov 16 '22 20:11

Mads Mogenshøj


I was looking to disable iframe links too and couldn't find a solution. Thanks to HTML5, you can easily disable links by simply adding the sandbox attribute.

<iframe src="externalsite.com" sandbox></iframe>

view demo

I hope this helps someone searching the net, especially since this questions pops up first on Google.

like image 15
Josan Iracheta Avatar answered Nov 16 '22 21:11

Josan Iracheta


The solution mentioned by "lol" actually works quite well. I stumbled on this accidentally after working on this for a couple of hours...

Put your iframe inside a div element, then make the div transparent and push the z-index of the iframe behind the div. See this example:

<div class="container">
  <iframe class="lockframe" src="www.google.com"></iframe>
</div>

Then set up your css like this:

div.container { background: transparent; }
iframe.lockframe { z-index: -2; }

Load up your page and the div is what will accept the click events, not the iframe.

like image 11
Zoccadoum Avatar answered Nov 16 '22 19:11

Zoccadoum