• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 620
  • Last Modified:

How do I detect what page iframe is loaded in and change iframe src if not loaded in intended page?

Example:

MyFramePage.aspx gets loaded in an iFrame in MainPage.aspx  MyFramePage.aspx should check to see if it is loaded in MainPage.aspx if it is not MyFramePage should redirect/reload another page in its place.  

The url for MainPage.aspx will also have a query string appended like MyMainPage.aspx?id=xxxxxx so the script in MyFramePage.aspx should contain something like if parent contains MyMainPage.aspx and ignore the query part.  I need the Javascript to accomplish this.  

 
0
gosonic
Asked:
gosonic
  • 2
1 Solution
 
David H.H.LeeCommented:
Hi gosonic,
>>..MyFramePage.aspx should check to see if it is loaded in MainPage.aspx if it is not MyFramePage should redirect/reload another page in its place.  
Try this:

MainPage.aspx
==================
<iframe id="if1" src="MyFramePage.aspx">
</iframe>
 
MyFramePage.aspx
==================== 
<script>
if(window.parent.frames["if1"]){
 
if(window.parent.frames["if1"].location.toString().indexOf("MyFramePage.aspx")==-1){
 //change source
 location.href='http://google.com'
}
 
}else{
 //not loaded in any iframe
 location.href='http://google.com'
}
 
</script>
 
Text bla bla bla....

Open in new window

0
 
David H.H.LeeCommented:
Hi gosonic,
Another approach for checking iframe checking inside MyFramePage.aspx:



MyFramePage.aspx
==================== 
<script>
var isLoadedInIFrame = (window.location != window.parent.location) ? true : false;
 
if(!isLoadedInIFrame){
  //not loaded in any iframe
  location.href='http://google.com';
}else{
  //check parent page
  if(window.parent.location.toString().indexOf("MainPage.aspx")==-1){
    //not loaded in MainPage.aspx
    location.href='http://google.com';
  }
}
</script>

Open in new window

0
 
fsze88Commented:
like this?

<script type="text/javascript">
function checkIframeSrc(){
  var iframesrc = document.getElementById('iframe1').src;
  var iframefilename = iframesrc.substr(iframesrc.lastIndexOf("/") +1   , iframesrc.length-iframesrc.lastIndexOf("/"));
 if (iframefilename != 'iframe1.html'){
  document.getElementById('iframe1').src = 'http://www.yahoo.com';
 }
}
</script>

<body  leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 onload="checkIframeSrc();">
<iframe name="iframe1" id="iframe1" src="iframe1.html" style="visibility:visible; " frameborder=1 scrolling=yes width=500 height=500>
</iframe>
</body>
0
 
gosonicAuthor Commented:
Thanks for your help.  The app I'm using it in is IE8 specific and it works just fine there.  FYI : Also tested Chrome & Opera works there too. It didn't test out in FF but that doesn't matter to me at this point.
Thanks again
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now