How to identify if a webpage is being loaded inside an iframe or directly into the browser window?

前端 未结 16 2368
攒了一身酷
攒了一身酷 2020-11-22 00:28

I am writing an iframe based facebook app. Now I want to use the same html page to render the normal website as well as the canvas page within facebook. I want to know if I

相关标签:
16条回答
  • 2020-11-22 01:07

    When in an iframe on the same origin as the parent, the window.frameElement method returns the element (e.g. iframe or object) in which the window is embedded. Otherwise, if browsing in a top-level context, or if the parent and the child frame have different origins, it will evaluate to null.

    window.frameElement
      ? 'embedded in iframe or object'
      : 'not embedded or cross-origin'
    

    This is an HTML Standard with basic support in all modern browsers.

    0 讨论(0)
  • 2020-11-22 01:07

    This ended being the simplest solution for me.

        <p id="demofsdfsdfs"></p>
    
    <script>
    
    if(window.self !== window.top) {
    
    //run this code if in an iframe
    document.getElementById("demofsdfsdfs").innerHTML = "in frame";
    
    }else{
    
    //run code if not in an iframe
    document.getElementById("demofsdfsdfs").innerHTML = "no frame";
    }
    
    </script>
    
    0 讨论(0)
  • 2020-11-22 01:08
    if ( window.location !== window.parent.location ) 
    {
          // The page is in an iframe   
    } 
    else 
    {     
          // The page is not in an iframe   
    }
    
    0 讨论(0)
  • 2020-11-22 01:09

    I actually used to check window.parent and it worked for me, but lately window is a cyclic object and always has a parent key, iframe or no iframe.

    As the comments suggest hard comparing with window.parent works. Not sure if this will work if iframe is exactly the same webpage as parent.

    window === window.parent;
    
    0 讨论(0)
提交回复
热议问题