I learnt this easy way of refreshing a parent page when an action is performed in the iFrame. Let's say you have a button in your iframe page which performs some function(Save in our case here).
<div>
<apex:commandButton value="Save" action="{save}" onComplete="refreshWindow();" />
</div>
You can put a script tag at the bottom of the iFrame page to code refreshWindow method as below:
<script>
refreshWindow = function(){
console.log('Refreshing window now...');
window.top.location='/{!recordId}';
return false;
}
</script>
refreshWindow = function(){
console.log('Refreshing window now...');
window.top.location='/{!recordId}';
return false;
}
</script>
top.location
(which is an alias of window.top.location
) returns the location of the topmost window in the window hierarchy. If a window has no parent, top
is a reference to itself (in other words, window
=== window.top
)