2011-08-26 22 views
12

Tengo un sitio web que incorpora un iframe. Cuando estaba probando el iframe, utilicé google.com y noté que el campo de entrada de búsqueda se enfocaba. Claramente, no usaré google.com para producción, pero me gustaría evitar que el iframe robe el foco.Prevenir que un iframe robe el foco

¿Hay alguna manera de evitar que un iframe robe el foco?

Respuesta

1

No realmente. Se puede poner el foco de nuevo en la ventana si el foco se aleja (ADVERTENCIA: No recomiendo el uso de ese código):

<body onblur="window.focus();"> 

Esto tiene algunos no tan agradables efectos secundarios como no poder enfoca la barra de ubicación en Firefox o entra en bucles infinitos si el marco también intenta luchar por el foco. Entonces, si quieres hacer esto (ese es un gran "si", no lo recomiendo) al menos deberías limitarlo a la fase de carga de la página y permitir que el foco cambie después de eso.

6

Si tiene acceso a las secuencias de comandos del lado del servidor puede usarlo para descargar una copia en vivo de la página que desea incrustar, buscarla y eliminar cualquier código de robo de foco, luego mostrar esa página modificada en su iframe. O si encuentra que no hay código de robo de foco, puede simplemente vincular su iframe a la página remota, como de costumbre.

Otra opción podría ser la de ocultar inicialmente el iframe con CSS style="display:none" y permitir que el usuario para salir de ella con javascript Object.style.display="inline"

0

Ahora podemos utilizar HTML5 atributo caja de arena para este propósito:

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

Los parámetros son :

Property    : Allows 
allow-top-navigation : top-level redirects 
allow-forms   : form submission 
allow-popups   : popups 
allow-pointer-lock : pointer lock 
allow-same-origin : the document to maintain its origin 
allow-scripts  : JS 
+0

Pero aquí sus opciones son no permitir secuencias de comandos o vivir con el robo de foco presumiblemente. –

+5

Entonces, ¿qué opción tiene algo que ver con evitar el robo de foco? – G0BLiN

+0

'sandbox' NO impide el robo de foco en mis pruebas (en Chrome). –

Cuestiones relacionadas