2009-07-08 8 views
2

J'ai un ensemble de pages asp.net que j'aimerais qu'elles ne soient accessibles ou chargées que lorsqu'elles sont chargées depuis un IFrame. Si vous tentez d'accéder directement aux pages via la barre d'adresse du navigateur, la page ne devrait pas s'afficher ou afficher le message à l'utilisateur.Comment forcer le chargement de la page uniquement dans un IFrame?

J'ai essayé d'utiliser des cookies et des sesions, mais ils ne sont pas très efficaces car une fois le cookie/session créé, vous pouvez accéder aux pages directement à partir du navigateur, sans passer par IFrame.

Ma plate-forme de développement est asp.net 2.0+, VS2008, C# 2.0+

Répondre

5

Ceci est un exemple de l'une des rares fois, il est préférable de mettre le script dans la balise de tête.

<html> 
<head> 
    <title>sandBox</title> 
    <script type="text/javascript"> 
     if (frameElement == null) { 
      //change location or close 
      window.location = "http://stackoverflow.com"; 
      // or window.close(); 
     } 
    </script> 
</head> 
<body> 
content goes here 
</body> 
</html> 
+0

Merci beaucoup, très utile. – JoeW

+0

Je devais mettre l'instruction if dans une fonction qui était appelée dans un gestionnaire body onLoad. Sinon, cette solution a fonctionné comme un charme – rotard

0

Essayez ceci à l'intérieur de votre tête tag:

<script> 
if(window.self !== window.top); //inside an iframe 
else window.location = "http://stackoverflow.com/" // Outside 
</script> 
Questions connexes