Pergunta

Então, eu sei que, se eu incluir um iframe para uma página que não está no mesmo domínio, não posso acessar o DOM do IFRAME através da política do navegador, mas uma página que está em um iframe fazer algum tipo de documento pai acessando?

Especificamente, tenho que as idéias que dependem dessa pergunta:

  1. Se a página incorporada puder dizer que não é a janela dos pais, pode-se fabricar sites que são inabletes para que, se a página detectar, ele é amamed, ela muda para uma página "Go Away" ou você poderá fazê-la apenas -Frame-Eable (semelhante a um script do lado do servidor para páginas que só devem ser incluídas), para que ir à página quando não for que o IfRamed obtenha uma página "Go Away".

  2. Se a página do iFRamed tiver certas liberdades que a janela dos pais não, poderá solicitar a folha de estilo da janela pai e defini -la como na folha de estilo, tornando o site mais integrar -se mais ao documento pai. (É claro que eu poderia apenas fazer com que minha folha de estilo se relacionasse mais com o site IFRamed, sabendo que isso fará isso, mas não vejo isso como um problema).

Alguém sabe?

Foi útil?

Solução

Com relação ao #1, sim, você pode dizer se está sendo enquadrado usando um JavaScript simples:

<script type="text/javascript">
if (self != top)
{
  // Framed!
}
</script>

Em relação ao #2, não tenho certeza do que você pode fazer usando a variável "top", mas sei que você pode alterar sua localização (por isso O quadro superior - redirecionando essencialmente o usuário diretamente para o seu site).

Não tenho certeza do que mais você pode ou não fazer com o quadro superior - alguém pode fornecer mais informações lá.

Outras dicas

Você também pode estar interessado em Este artigo de horror de codificação sobre detectar quadros. Você pode detectar se você foi enquadrado, mas também existem contramedidas que a página "pai" pode levar para impedir que você atue nisso. Exemplo do artigo:

Detecte se você foi enquadrado:

if (parent.frames.length > 0) {
    top.location.replace(document.location);
}

Impedir que um quadro detecte e redirecionasse:

   var prevent_bust = 0  
   window.onbeforeunload = function() { prevent_bust++ }  
   setInterval(function() {  
     if (prevent_bust > 0) {  
       prevent_bust -= 2  
       window.top.location = 'http://server-which-responds-with-204.com'  
     }  
   }, 1)  

Isso é possível através da incorporação após o JavaScript na página:

if(top.location.href != self.location){
//do redirection or display message
}

Você pode ter este JavaScript como parte do modelo do site e impedir que qualquer página seja exibida no iframe

Eu já fiz isso antes e funcionou:

<script type="text/javascript">
if (window.parent != null)
{
  // Framed!
}
</script>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top