Este artigo descreve o método do JS para impedir que as páginas da Web sejam incorporadas na estrutura do iframe. Compartilhe -o para sua referência, como segue:
Por exemplo:
<script type = "text/javascript"> if (window! = top) // determine se o objeto de janela atual é um objeto superior top.location.href = window.location.href; // Caso contrário, direcione automaticamente o URL do objeto superior para o URL incorporado na página da web </sCript>
Este código é válido. No entanto, há um problema: depois de usá -lo, ninguém pode incorporar sua página da web na estrutura, incluindo você.
Então, hoje estou pensando se existe uma maneira de fazer minhas páginas da web incorporadas apenas em minha própria estrutura, não as estruturas de outras pessoas?
Na superfície, essa questão é muito simples. Basta fazer um julgamento: se os nomes de domínio da estrutura atual e a estrutura de nível superior são os mesmos e, se a resposta for não, um redirecionamento de URL será feito.
if (top.location.hostname! = window.location.hostname) {top.location.href = window.location.href;}No entanto, inesperadamente, este escrito está errado e não pode ser executado. Você pode ver onde está o erro?
Suponha que top.location.hostname é www.111.com e window.location.hostname é www.222.com. Ou seja, 111.com incorpora 222.com em sua página da web. Neste momento, o que acontecerá se você comparar top.location.hostname! = Window.location.hostname?
O navegador solicitará um erro de código!
Por serem domínios cruzados, a política de segurança do navegador não permite que as páginas da Web do 222.com operem as páginas da Web do 111.com e vice-versa. O IE chama esse erro "sem permissões". Além disso, o navegador nem permite visualizar top.location.hostname. Nos casos de domínio cruzado, você relatará diretamente um erro assim que vir esse objeto.
Então, como o código deve ser modificado?
De fato, isso nos leva a verificar se o top.Location.HostName é relatado como um erro. Se um erro for relatado, indica que há um domínio cruzado e o objeto superior será redirecionado; Se um erro for relatado, indica que não há domínio cruzado (ou a estrutura não é usada), então nenhuma ação será tomada.
tente {top.location.hostname;} catch (e) {top.location.href = window.location.href;}Isso é escrito corretamente e pode ser executado corretamente no IE e no Firefox. No entanto, o Chrome terá um erro. Por alguma razão, em situações de domínio cruzado, o Chrome não relata um erro ao top.Location.HostName!
Não há como adicionar apenas outra peça de código suplementar para o Chrome.
tente {top.location.hostname; if (top.Location.HostName! = Window.Location.HostName) {top.Location.href = window.Location.href; }} catch (e) {top.location.href = window.location.href;}OK, o código da versão atualizado é concluído. Exceto para nomes de domínio local, nenhum outro nome de domínio pode incorporar sua página da web na estrutura.
Para obter mais informações sobre o conteúdo relacionado ao JavaScript, consulte os tópicos deste site: "Resumo da operação de JavaScript Skills Iframe", "Resumo das habilidades de operação do Javascript Matriz", "Resumo de JavaScript Mathematics Uso", "Summart SummartScript Data Structure and Algorithm Skills", "Summary of Jaxinando Javascript Structure e Algorithm Skills", "Summary of Jaxinando o JavScript. Habilidades "," Resumo da animação JavaScript Efeitos e habilidades especiais "," Resumo dos erros de JavaScript e habilidades de depuração "e" Resumo do algoritmo e habilidades de travessia de JavaScript "
Espero que este artigo seja útil para a programação JavaScript de todos.