2010-07-08 15 views
8

¿cómo puedo evitar que una página html se desplace cuando se presionan las teclas de flecha si se enfoca un iframe dentro de él?impedir el desplazamiento con las teclas de flecha

im gettting este error en cromo

El iframe se centra, sé que es enfocada. el padre se desplaza de todos modos.

+0

¿Tiene control sobre el contenido en el iframe? –

+0

sí, y está en el mismo dominio –

+0

IE 6+, FF3 +, Chrome: todos hacen lo que usted acaba de decir por defecto. Hago clic en el iframe y presiono la flecha hacia abajo. El iframe se desplaza por la página no. ¿Qué deseas? – galambalazs

Respuesta

12

El siguiente código dentro del documento marco flotante evitará su desplazamiento:

document.onkeydown = function(evt) { 
    evt = evt || window.event; 
    var keyCode = evt.keyCode; 
    if (keyCode >= 37 && keyCode <= 40) { 
     return false; 
    } 
}; 
+0

que evitará que el iframe se desplace, pero quiero evitar que la página se desplace. –

+0

Pero si el iframe está enfocado, ¿cómo pueden las teclas de flecha afectar el documento principal? –

+0

Es porque la forma en que se enfoca no funciona como debería. Mi respuesta le proporciona el código para solucionar ese problema. –

0

Esto funciona, excepto IE:

window.top.document.onkeydown = function(evt) { 
    evt = evt || window.event; 
    var keyCode = evt.keyCode; 
    if (keyCode >= 37 && keyCode <= 40) { 
     return false; 
    } 
}; 
0

Este código hace el truco:

JavaScript

<script type="text/javascript"> 
    function focusOnIframe(iFrameID) { 
    if (frames[iFrameID]!=undefined) 
     frames[iFrameID].focus(); // Works in all browser, except Firefox 
    else 
     document.getElementById(iFrameID).focus(); // Works in Firefox 
    } 
</script> 

HTML (ejemplo)

<input type="button" id="setfocus" value="Set focus" onclick="focusOnIframe('myiframe')" /> 

<p>Bla<br />Bla<br />Bla<br />Bla<br />Bla<br /></p> <!-- Just some filler --> 

<iframe id="myiframe" src="yourpage.html"></iframe> 

<p>Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br /></p> <!-- Just some filler --> 

Lo he probado en Firefox 3.6.6, hierro 5.0.380, Opera 10.60, IE 6 e IE 8.

+0

entiendes que la pregunta implica desplazamiento, ¿verdad? no enfocando? –

+0

El problema es que su enfoque no está funcionando, ¿correcto? Es decir. cuando el iframe está enfocado y utiliza las teclas de flecha, desplaza al elemento primario. El código anterior establece el foco y el elemento principal no se desplaza. –

+0

no, se enfoca en el marco –

Cuestiones relacionadas