Este artículo describe el método de JS para evitar que las páginas web se integren en el marco de iframe. Compártelo para su referencia, como sigue:
Por ejemplo:
<script type = "text/javaScript"> if (window! = top) // determina si el objeto de ventana actual es un objeto superior top.location.href = window.location.href; // Si no, dirija automáticamente la URL del objeto superior a la URL que está incrustada en la página web </script>
Este código es válido. Sin embargo, hay un problema: después de usarlo, nadie puede incrustar su página web en el marco, incluido usted mismo.
Entonces, hoy estoy considerando si hay una manera de hacer que mis páginas web solo sean integradas en mi propio marco, no los marcos de otras personas.
En la superficie, esta pregunta es muy simple. Simplemente haga un juicio: si los nombres de dominio del marco actual y el marco de nivel superior son los mismos, y si la respuesta es no, se realiza una redirección de URL.
if (top.location.hostname! = window.location.hostname) {top.location.href = window.location.href;}Sin embargo, inesperadamente, este escrito es incorrecto y no se puede ejecutar en absoluto. ¿Puedes ver dónde está el error?
Suponga que top.location.hostname es www.111.com, y window.location.hostname es www.222.com. Es decir, 111.com incorpora 222.com en su página web. En este momento, ¿qué sucederá si compara top.location.hostname! = Window.location.hostname?
¡El navegador provocará un error de código!
Debido a que son de dominio cruzado, la política de seguridad del navegador no permite que las páginas web de 222.com operen las páginas web de 111.com, y viceversa. IE llama a este error "sin permisos". Además, el navegador ni siquiera le permite ver top.location.hostname. En casos de dominio cruzado, informará directamente un error tan pronto como vea este objeto.
Entonces, ¿cómo se debe modificar el código?
De hecho, esto nos indica que solo verifique si el nombre top.location.hostName se informa como un error. Si se informa un error, indica que hay un dominio cruzado, y el objeto superior será redirigido; Si se informa un error, indica que no hay dominio cruzado (o no se usa el marco), entonces no se tomarán medidas.
Pruebe {top.location.hostname;} catch (e) {top.location.href = window.location.href;}Esto se escribe correctamente y se puede ejecutar correctamente en IE y Firefox. Sin embargo, Chrome tendrá un error. Por alguna razón, en situaciones de dominio cruzado, Chrome no informa un error a top.location.hostname!
No hay forma, solo puedo agregar otra pieza de código complementario para Chrome.
intente {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, se completa el código de versión actualizado. A excepción de los nombres de dominio locales, ningún otro nombre de dominio puede incrustar su página web en el marco.
For more information about JavaScript related content, please check out the topics of this site: "Summary of JavaScript Operation Iframe Skills", "Summary of JavaScript Array Operation Skills", "Summary of JavaScript Mathematical Operation Usage", "Summary of JavaScript Data Structure and Algorithm Skills", "Summary of JavaScript Switching Special Effects and Skills", "Summary of JavaScript Search Algorithm Habilidades "," Resumen de JavaScript Animation Efectos especiales y habilidades "," Resumen de los errores de JavaScript y las habilidades de depuración "y" Resumen del algoritmo y habilidades transversales de JavaScript "
Espero que este artículo sea útil para la programación de JavaScript de todos.