jkm
jkm

Reputation: 352

How can I refresh parent window from an iframe?

I've got a parent page and an iframe inside that page. The links in the parent control the page that gets loaded in the iframe. What I want to do is refresh the parent page when the iframe gets loaded. I've got this in the iframe:

RefreshParent(){
    parent.location.reload();
}

<body onload="RefreshParent();">

But, the above code refreshes the whole parent page along with the iframe inside it which in turn reloads the parent page and goes into an infinite loop.

Upvotes: 10

Views: 60917

Answers (6)

sidarcy
sidarcy

Reputation: 3008

As long as your on the same domain you can use something like:

window.parent.location = window.parent.location + '?parent-updated=true'

Upvotes: 1

Sangam Uprety
Sangam Uprety

Reputation: 1482

You won't need to use ajax techniques either. You can simply call a javascript function in parent page from the page contained in the iframe of parent page. This way you can easily perform actions on parent page. How to refresh parent page partially from page in iframe without affecting the iframe illustrates how.

Hope this helps.

Upvotes: 2

Cruachan
Cruachan

Reputation: 15971

Depends what your layout is, but as other posts have observed you cannot refresh the parent frame without refreshing the iframe itself as it is part of the page.

If you do not wish to use ajax, and layout permits, one solution is to place the contents of the parent frame in an iframe itself. You can then tell the parent page to refresh the iframe containing the 'parent content' when your iframe loads. If your 'parent' iframe is borderless and there is no scrolling then this is all transparent to the user.

You could push this technique as far as a couple of iframes for the parent contents and it can be quicker and simpler to implement than ajax, beyond that you're as well to bite the bullet and implement an ajax solution.

Upvotes: 0

JayTee
JayTee

Reputation: 2806

You'll need to have your iframe become a "regular" frame in order to preserve it while refreshing another part of the page. Since the iframe is technically part of the parent (it's an inline frame, after all), refreshing the parent will reload the iframe content as well.

Upvotes: 0

Diodeus - James MacFarlane
Diodeus - James MacFarlane

Reputation: 114367

You can't tell the parent window to refresh and exclude any part of its own page, including the iframe contained within it. You can do this using AJAX techniques though.

Upvotes: 1

Greg
Greg

Reputation: 321638

You can't refresh the parent page without reloading the iframe.

What you could do is use AJAX to update the parent's content, but that could be a fair amount of work (using the jQuery or Prototype frameworks would make this easier).

Upvotes: 10

Related Questions