views:

27

answers:

1

I'm working on an ASP.NET web application. There's a bill page which has two links to different pdfs of the same bill. When you click on one of the links it takes you to a ViewPDF.aspx page that shows the pdf. There's also an option to view both in a split screen so that you can compare them. When you click on this link it takes you to BillSplit.aspx which has a frameset and two frames that both point to ViewPDF.aspx. This all works perfectly.

The problem is that if an error occurs while pulling up the pdf. The application has an error page that has a few links back into the application. If you use one of these you can go back into the app and continue but now inside the frame. The URL still says BillSplit.aspx but the application is completely unaware of this since frames are HTML elements not asp.net controls.

What I would like to do at this point is detect that you've returned to the application and close the frame you aren't using. Essentially I'd like to redirect you away from BillSplit.aspx and to the page you're actually requesting. I'm pretty sure this would need to be done in Javascript either on the BillSplit page or on the pages that you go to later.

So I guess what I'm asking is, is there a way to ensure that the BillSplit.aspx page and it's two frames point only at ViewPDF.aspx? Thanks!

A: 

if both the page and the frames inside the frames are on the same domain.

you can maybe register a startup script when you get to the error page.

what the script will do is something like checking if he is inside a frame with something like with the top.document anyway if it does you can then redirect in the client to another page you want. or even to the error page. this way it wont display inside frames.

will that help?

guy schaller
I worked off what you said and here's what I came up with: if (top.window.location.pathname != window.location.pathname } It seems to work perfectly if placed on every page I don't want the frames to go to.
Peter