inside ejemplos ejemplo create content javascript iframe

javascript - ejemplos - Evitar que el iframe infantil "salga de cuadro"



iframe responsive (4)

Estoy haciendo un trabajo simple de integración web que estoy logrando mediante el uso de un iframe. Mi ventana principal tiene algunos javascript que interactúa con mi servidor para redirigir el iframe a la URL requerida. Una de las páginas de destino tiene tristemente el siguiente código dentro:

if (top.location != location) { top.location.href = document.location.href ; }

La secuencia de comandos muere debido a las restricciones de bloqueo entre sitios y evita que la página se reproduzca correctamente. No puedo modificar el origen de esa página (tercero con el que me estoy integrando).

¿Cómo podría solucionar esto?

Gracias


Después de mucho buscar desarrollé un truco simple. Creé una página ficticia en mi propio sitio que pedía el marco i. Luego tuve un fotograma en la página ficticia que pedía que el sitio saliera de los marcos. Salió del primer fotograma, pero como la página ficticia estaba en mi sitio, se mantuvo prolijamente en el marco de la página principal. violla


Esta es mi primera publicación, así que no me molestes si no funciona, pero esta solución parece funcionar para mí en IE. Agregue seguridad = "restringido" a su marco.

ejemplo:

<iframe id="frame_id" name="frame_name" security="restricted" src="page.html"> </iframe>

Editar: Encontré una mejor solución. Eso no bloquea los scripts y no requiere javascript. Intenta usar sandbox = "..."

  • allow-forms permite el envío de formularios
  • permitir-popups permite pop-ups
  • allow-pointer-lock permite el bloqueo del puntero
  • permitir el mismo origen permite que el documento mantenga su origen
  • allow-scripts permite la ejecución de JavaScript y también permite que las características se activen automáticamente
  • allow-top-navigation permite que el documento salga del marco navegando por la ventana de nivel superior

La navegación superior es lo que desea evitar, así que déjelo y no se permitirá. Cualquier cosa que quede será bloqueada

ex.

<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" src="http://www.example.com"></iframe>


Existe una técnica para desactivar el código de reventa de fotogramas, como se discutió en una nueva pregunta de SO :

Como resultado, su código de eliminación de fotogramas puede ser reventado , como se muestra aquí :

<script type="text/javascript"> 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) </script>

Este código hace lo siguiente:

  • incrementa un contador cada vez que el navegador intenta navegar desde la página actual, a través del controlador de eventos window.onbeforeonload
  • configura un temporizador que dispara cada milisegundo a través de setInterval() , y si ve el contador incrementado, cambia la ubicación actual a un servidor del control del atacante
  • ese servidor sirve una página con el código de estado HTTP 204 , que no hace que el navegador navegue a ningún lado

Una pregunta válida, y una que deseo que más personas tomen en serio, en lugar de simplemente responder con comentarios poco convincentes sobre "respetar" los deseos de aquellos cuyo material se vincula, a veces de manera no intencional.

¿Qué pasa con el respeto del tráfico, que roba el marco javascript?

En términos netiquette, los scripts de framebusting son en realidad un gran no-no, por esa misma razón.

Hay muchas razones genuinas e inocentes para usar marcos o marcos, y no solo es muy fácil, sino increíblemente común, que el código, especialmente las URL, se inserte de forma legítima o ilegítima en una página dentro de ese conjunto de marcos, que conduzca tráfico intencionalmente o de otra manera, a otra página que, de manera bastante grosera, rompe el conjunto de marcos y roba el tráfico.

El método correcto de netiquette para que un webmaster lo use, que no desea que su material se muestre en un conjunto de marcos, ya sea que se haya hecho intencionalmente o no, es hacer un script de redireccionamiento a una página superior que muestre un mensaje informando El internauta que la página solicitó no estaba destinado a ser visto en marcos, y si desea ver esa página, entonces pueden verla en una url, que luego se vincula, para abrir en una nueva pestaña, o página de navegador, que no se ve rompa el conjunto de marcos y robe el tráfico de los sitios originales, permitiendo así que el navegante tome la decisión de dónde realmente desea navegar.

Deseo que más webmasters respeten dicha netiqueta.