Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Links inside iframe (not in popup) doesnt work

I have gone through other similar issues to solve this particular issue, but somehow in this case all the solutions are not working.

So here is my the question with example snippet:

I have an html file which looks like this:

<div id="portalRight">
    <a target="_blank" href="http://ictforu.com">   <!-- this link works , it opens up another tab -->
    <ul id="subtabnav">
        <li class="datasetTab">
            <a href="#">dataset</a> <!-- Click on this will trigger the dataset iframe to be loaded thru a servlet call  -->
        </li>
        <li class="obsGraphTab" data-bind="css: { disabled: !aekos.subTabViewModel.graphTabsEnabled() }">
            <a href="#">Observation Graph</a>
        </li>
        .....
    </ul>

    <div id="dataset">
        <iframe id="dataset-frame" class="graphiframe" seamless sandbox="allow-same-origin allow-scripts"></iframe>
    </div>
    <div id="testViewer">
                <iframe id="test-viewer-frame" class="graphiframe" seamless sandbox="allow-same-origin allow-scripts"></iframe>
    </div>

</div>

As you can see my iframe isn't a popup but appears under a div element: iframe contents are filled using a servlet when the link is clicked.

My iframe has base tags (base target="_parent")under header of the iframe.

I have used <base> tag to specify the behaviour and also link has target="_blank", but my links doesn't work at all. Same link works outside the iframe.

example iframe :

base target="_parent" /base 

body content:

a target="_blank" href="http://ictforu.com" /a 

this link doesn't work, clicks are ignored.

Any help is much appreciated.

Sorry had some editing issues with the html tags earlier.

Thanks, Madhu

like image 568
Madhu V Rao Avatar asked Jun 04 '13 23:06

Madhu V Rao


People also ask

Can iframe open popup?

Iframe popup plugin was specially developed to display any web page in the popup window using web URL. It uses fancy box to display popup in iframe.

Why some websites are not opening in iframe?

You have to check for HTTP response header X-Frame-Option of those sites. if its value is "DENY or SAMEORIGIN", then you can not load those website in the iframes. DENY = No one can load the website in iframe. Even the same domain page wont be able to load.

How do I embed a link into an iframe?

To embed an iframe in a content page, select Interactive layout, choose the HTML block and paste the iframe code there. You can adjust the iframe width and height properties. To embed an iframe using the Old (Classic) editor, click on the Embed Media icon and paste the code in the appropriate field.

How do I get an iframe link to open in a new tab?

By adding target="_blank" to the anchor, it will open it in a new tab. By adding target="_parent" to the anchor, it will open it up in the same window like a normal link.


2 Answers

I can't really explain the 'why' cause don't know much about the sandbox attribute of the iframe, but the link opened in a new tab just fine for me when I removed that attribute.

edit:

Looking into it a little more, it seems that you can add the attribute "allow-top-navigation" and then change the link to 'target=_parent' and that works, but it still will not work if you leave the target=_blank

Here is a little bit of documentation from the mozilla site

sandbox HTML5 only
If specified as an empty string, this attribute enables extra restrictions on the content that can appear in the inline frame. The value of the attribute can be a space-separated list of tokens that lift particular restrictions. Valid tokens are:

  • allow-same-origin: Allows the content to be treated as being from its normal origin. If this keyword is not used, the embedded content is treated as being from a unique origin.
  • allow-top-navigation: Allows the embedded browsing context to navigate (load) content to the top-level browsing context. If this keyword is not used, this operation is not allowed.
  • allow-forms: Allows the embedded browsing context to submit forms. If this keyword is not used, this operation is not allowed.
  • allow-scripts: Allows the embedded browsing context to run scripts (but not create pop-up windows). If this keyword is not used, this operation is not allowed.

Note:

  • When the embedded document has the same origin as the main page, it is strongly discouraged to use both allow-scripts and allow-same-origin at the same time, as that allows the embedded document to programmatically remove the sandbox attribute. Although it is accepted, this case is no more secure than not using the sandbox attribute.
  • Sandboxing in general is only of minimal help if the attacker can arrange for the potentially hostile content to be displayed in the user's browser outside a sandboxed iframe. It is recommended that such content should be served from a separate dedicated domain, to limit the potential damage.

There isn't much more there, but here's the link

like image 170
Jeff Wright Avatar answered Nov 07 '22 03:11

Jeff Wright


Sandbox gives you control to set needed permissions instead of opening up everything. Here with your need to set permission,"allow-scripts allow-popups". it will work fine. make sure you remove the configurations according to the situation.

  <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"
src="your_url"></iframe>
like image 23
Saminda Kularathne Avatar answered Nov 07 '22 04:11

Saminda Kularathne