Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

browser back acts on nested iframe before the page itself - is there a way to avoid it?

I have a page with dynamic data loaded by some ajax and lots of javascript.

the page contains a list from which the user can choose and each selected value loads new data to the page.

One of these data items is a url provided to an iframe.

I use jQuery BBQ: Back Button & Query Library to simulate the browser-back behavior.

All works well besides the fact that when i click the back button for the first time the iframe goes back to its previous location and then I need to click back again to make the page go back.

Is there a way to disable the iframe's back behavior?

like image 581
kfiroo Avatar asked Feb 11 '10 16:02

kfiroo


People also ask

What is nested iframe?

HTML Iframe is used to display a nested webpage (a webpage within a webpage). The HTML <iframe> tag defines an inline frame, hence it is also called as an Inline frame. An HTML iframe embeds another document within the current HTML document in the rectangular region.

How do I stop an iframe?

Scroll down to the Miscellaneous category and click "Disable" under "Launching programs and files in an IFRAME." Click "OK" twice to save and activate your changes.

Can you iframe a specific part of page?

Set the iframe to the appropriate width and height and set the scrolling attribute to "no". If the area you want is not in the top-left portion of the page, you can scroll the content to the appropriate area.


1 Answers

I've found the answer to my problem guess it could be useful for others out there.

The problem was with the way i assigned new URLs to my Iframe, i used Jquery so it looked something like that:

$('#myIFrame').attr('src',newUrl); 

When assigning the URL in that manner it adds a new entry to the browser's list of visited URLs to go back to.
That wasn't the desired behavior, so after some googling i found that you can assign a new URL to an Iframe object without adding it to the 'back-list', it looks like that:

var frame = $('#myIFrame')[0];   frame.contentWindow.location.replace(newUrl); 

This way my back button behave exactly as expected.

btw, i got my answer from here.

Hope this was helpful to you as it was to me.

like image 145
kfiroo Avatar answered Oct 01 '22 19:10

kfiroo