Search code examples
javascripthtmlinternet-explorer-6frames

How to tell if current frame is parent?


I'm working in a framed environment, and trying to tell if the frame on which some javascript code executes is the top frame (the one that contains the rest).

Up until now I was trying to check it with

window.parent != null

but it always returns false, like in this simple example.

<html>
<head>
  <script>
    alert(parent == null);
  </script>
</head>

<body>
  <h1>OH YEAH!</h1>
</body>
</html>

Is there a way to do this? I doesn't have to be portable, right now I'm looking for the IE6 solution.


Solution

  • I found this pdf to be very useful: http://seclab.stanford.edu/websec/framebusting/framebust.pdf

    In short, if this is too long to read, this is what they ultimately propose :

    <style>
      html { display :none; }
    </style>
    <script>
    if(self==top){
      document.documentElement.style.display = 'block';
    }else{
    top.location=self.location;
    }
    </script>
    

    You will find many other means to do this in this pdf and each means' pro and cons. Obviously, on browsers without JavaScript, this solution could be painful ;)