views:

2226

answers:

2

I basically have a page which shows a "processing" screen which has been flushed to the browser. Later on I need to redirect this page, currently we use meta refresh and this normally works fine.

With a new payment system, which includes 3D secure, we potentially end up within an iframe being directed back to our site from a third party.

I need to be able to redirect from this page, either using javascript or meta-refresh, and bust out of the iframe if it exists.

Cheers!

(I have done busting out of iframes before but can't find my old code and a google search was useless, thought it was the perfect time to try Stackoverflow out!)

+1  A: 

So I added the following to my redirected pages. Luckily they have nothing posted at them so can be simply redirected. Also the use of javascript is ok as it is required to get to that point in the site.

<script type="text/javascript" language="javascript">
 if (top.frames.length>0)
 setTimeout("top.location = window.location;",100);
</script>
bjammin666
why do you need to delay it?
Kon
And your delay is only 1/10th of a second. Almost indistinguishable to the end-user from an instant redirect.
Adam Tuttle
You can lose the language attribute, it is deprecated.
scunliffe
Thanks guys all good points. The redirect isn't really needed as you say.
bjammin666
A: 

I'm doing something similar to keep an old site inside it's frameset:

<SCRIPT TYPE="text/JavaScript">
    if (window == top){top.location.replace("/foo.html");}
</SCRIPT>

So to break out of the iframe, just change == to !=

I see that you're using setTimeout in your example. Is waiting to break out of the iframe a requirement, or would you rather it happen immediately?

Adam Tuttle