Foros del Web » Programando para Internet » Javascript »

evitar volver atras

Estas en el tema de evitar volver atras en el foro de Javascript en Foros del Web. Hola buenos días, Estoy implementando una especie de encuesta en la que se le suman puntos pero no me interesa que pueda bvolver a atras ...
  #1 (permalink)  
Antiguo 10/06/2008, 03:02
 
Fecha de Ingreso: septiembre-2007
Mensajes: 39
Antigüedad: 16 años, 6 meses
Puntos: 0
Exclamación evitar volver atras

Hola buenos días,

Estoy implementando una especie de encuesta en la que se le suman puntos pero no me interesa que pueda bvolver a atras para que no vuelva a poner la respuesta y vaya probando hasta que acierte.

El problema es que he anulado el boton derecho, he quitado los botones de atras, pero aun me queda el tema del acceso por teclado ¿Hay alguna manera de evitar que se vuelva atras?

He estado probando con windows.history.go(+1) pero no me hace caso, sigue pudiendo ir hacia atrás.
  #2 (permalink)  
Antiguo 10/06/2008, 03:50
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Respuesta: evitar volver atras

Prueba con este código en el comienzo de la página:

Código:
<script type="text/javascript">
window.onload=function(){
	Objeto=document.getElementsByTagName("a");
	for(a=0;a<Objeto.length;a++){
		Objeto[a].onclick=function(){
			location.replace(this.href);
			return false;
		}
	}
}
</script>
Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 10/06/2008, 04:00
 
Fecha de Ingreso: septiembre-2007
Mensajes: 39
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: evitar volver atras

He probado este scrip y no me remplaza la URL, me sigue iendo hacia atras. Piensa que el unico modo que tienen de volver hacia atras es con el raton y el teclado: SHIFT + ruedecilla en el teclado no se como es.

Lo que me gustaría a mí es que identificase sin php ni base de datos, la pagina que esta detras en el history no se cargue, que se cargue la del history actual.

Pero muchas gracias!!
  #4 (permalink)  
Antiguo 10/06/2008, 04:11
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Respuesta: evitar volver atras

Estás seguro?

Yo lo pruebo y no puedo volver a la página donde está el script:

http://www.cl.ient.es/sinatras.html

Al darle atrás va a la página anterior a ésta.

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 10/06/2008, 04:19
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Respuesta: evitar volver atras

claro, que es un formulario... no tiene sentido el quitar el history. Y si pones una cookie cuando se llegue a la respuesta? de forma que la página de la pregunta compruebe si está dicha cookie y si está no deja preguntar. Claro que siempre queda el tema de borrar las cookies.

Y si pones un iframe oculto en la página que reciba el resultado y luego comunique a la página principal el resultado. Y tras recibirlo que elimine el iframe...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #6 (permalink)  
Antiguo 10/06/2008, 04:25
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Respuesta: evitar volver atras

Ya lo tengo! Pon esto en la página del formulario:

if(history.foward()){
location.replace(history.foward());
}

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #7 (permalink)  
Antiguo 10/06/2008, 04:36
 
Fecha de Ingreso: septiembre-2007
Mensajes: 39
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: evitar volver atras

Pero...esto lo pongo en una etiqueta script sin onclick ni nada?

Es que no me funciona, si hago SHIFT+rueda raton me sigue iendo atras

:/
  #8 (permalink)  
Antiguo 09/11/2008, 10:58
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: evitar volver atras

Cita:
Iniciado por KarlanKas Ver Mensaje
Estás seguro?

Yo lo pruebo y no puedo volver a la página donde está el script:

http://www.cl.ient.es/sinatras.html

Al darle atrás va a la página anterior a ésta.

Hola Karl!

Disculpa que moleste de tanto tiempo despues.

Yo tengo el mismo problema, quiero que en mis paginas en las que voy navegando no se pueda volver atras, salvo con mis botones o funciones que involucran history.back...

En este tu link que tienes aca, al abrir un otro link que hay ahi, la nueva ventana tiene el ATRAS deshabilitado y no se puede volver ni con BACKSPACE y el backspace esta habilitado.

Esa es una solucion???

En fin, como hago que cuando el usuario haga atras o backspace o algo por su propia iniciativa fuera de la funcionalidad de las paginas php, no se lo permita y le muestre una ventana amigable o algo.

Saludos y gracias.
  #9 (permalink)  
Antiguo 09/11/2008, 12:10
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: evitar volver atras

Para qué querés hacer eso? Pregunto porque seguramente tu problema puede resolverse de manera menos invasiva, más allá de que no hay ninguna técnica 100% efectiva para lograrlo.
  #10 (permalink)  
Antiguo 09/11/2008, 14:01
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: evitar volver atras

Puedes meter todo en un frame, el frame no irá hacia atrás, por lo menos no para usuarios no experimentados. Claro que usuarios experimentados siempre podrán ir hacia atrás. Como dice panino (Por cierto, saludos Panino) no hay técnica 100% efectiva. O puedes usar ajax, uno de sus puntos débiles es que des habilita la opción de ir hacia atrás, lo cual sería en tu caso, uno de sus puntos fuerte, o tambien usa flash, el cual tiene la misma debilidad.
  #11 (permalink)  
Antiguo 09/11/2008, 20:59
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: evitar volver atras

Cita:
Iniciado por buzu Ver Mensaje
Puedes meter todo en un frame, el frame no irá hacia atrás, por lo menos no para usuarios no experimentados. Claro que usuarios experimentados siempre podrán ir hacia atrás. Como dice panino (Por cierto, saludos Panino) no hay técnica 100% efectiva. O puedes usar ajax, uno de sus puntos débiles es que des habilita la opción de ir hacia atrás, lo cual sería en tu caso, uno de sus puntos fuerte, o tambien usa flash, el cual tiene la misma debilidad.
Gracias por la respuesta (Buzu y Panino) les comento que mi pagina esta maneja en frames, como explique en un tema anterior Aqui.

Y en el frame principal es donde se muestra toda la informacion, formularios y todas la paginas php, en un frame secundario se muestra estrictamente los menus con botones flash. Cuando hago atras el frame principal y este frame secundario pues si regresan a contenido anterior.

Como podria hacerlo con flash o ajax?? Me pudrias orientar un poco??

Muchisimas gracias y saludos!
  #12 (permalink)  
Antiguo 09/11/2008, 21:26
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: evitar volver atras

Pues lee primero un manual sobre flash o ajax, segun te decidas. Si te atoras con algo, con gusto te ayudamos.

Saludos.
  #13 (permalink)  
Antiguo 09/11/2008, 22:31
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: evitar volver atras

Cita:
Iniciado por buzu Ver Mensaje
Pues lee primero un manual sobre flash o ajax, segun te decidas. Si te atoras con algo, con gusto te ayudamos.

Saludos.
Algo especifico que tenga que ver? Antes de leerme toooodo el manual de ajax o flash?

Muchas gracias! Mientras ire comenzando a buscar...
  #14 (permalink)  
Antiguo 19/11/2008, 07:07
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: evitar volver atras

Muchas gracias KarlanKas por tu respuesta, voy a probar con tu solucion:

"Que las páginas no se sucedan, sino que se sustituyan así siempre hay solo una página"

Que se hace de la siguiente manera:

Código:
<script>
location.replace("nuevapagina.php");
</script>
Deduzco que "nuevapagina.php" es la pagina que le seguira a la pagino donde hare alguna accion.

Comento resultados.

Gracias y saludos!
  #15 (permalink)  
Antiguo 21/11/2008, 14:52
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: evitar volver atras

Que tal KarlanKas, te comento que probre el script y solo me recarga la pagina una y otra vez y no me deja moverme a ningun lado.

Probe ambos scripts que sugeriste y ningun evito el volver atras.

Espero tu respuesta.

Saludos!
  #16 (permalink)  
Antiguo 02/01/2009, 07:53
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: evitar volver atras

Hola de nuevo, para mi requerimiento en la navegacion de mi sistema en un navegador evitando volver atras, encontre que podia hacer esto:

Con esto evito que la pagina se guarde en la cache:
Código PHP:
header("Last-Modified: " gmdate("D, d M Y H:i ") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0"false); 
header("Pragma: no-cache"); 
y si incluyo este script cada vez que haga atras pues me rebotara a la pagina en la que me encuentro:
Código PHP:
echo '<SCRIPT LANGUAGE="JavaScript">'."\n"
echo 
'alert("no se puede regresar a la página");'."\n"
echo 
'history.go(+1);'."\n"; echo '</SCRIPT>'."\n"
O sea tendria esto en la pagina que deseo que no se vea al volver atras:
Código PHP:
header("Last-Modified: " gmdate("D, d M Y H:i ") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0"false); 
header("Pragma: no-cache");

echo 
'<SCRIPT LANGUAGE="JavaScript">'."\n"
echo 
'alert("no se puede regresar a la página");'."\n"
echo 
'history.go(+1);'."\n"; echo '</SCRIPT>'."\n"

El problema es que cada vez que ingrese por primera vez a la pagina siempre se mostrara el mensaje del script.

Ahora me doy cuenta que en realidad lo que necesito hacer es que en ningun momento (no solo en paginas especificas) pueda volver atras, ni con botones del navegador o con el teclado.

He estado revisando Ajax pero no encuentro algo que se ajuste a lo que necesito. A la fecha no se me ocurre que mas hacer.

Última edición por makeitslow; 02/01/2009 a las 07:59
  #17 (permalink)  
Antiguo 02/01/2009, 08:12
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: evitar volver atras

Volvemos a lo mismo: http://www.forosdelweb.com/2654896-post9.html
  #18 (permalink)  
Antiguo 07/01/2009, 09:27
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: evitar volver atras

Mil disculpas por darle vueltas tanto al tema, es que esa "funcionalidad" de no poder volver atras en las paginas de mi sistema era mas que nada para no tener que controlar mucho el tema de los frames que utilizo. Es que no se por que algunos cuando hago "volver atras" no se actualizan y me muestra en algunos frames la tipica pantalla de "no se puede mostrar la pagina". Ademas el usuario no necesita para nada ir atras, para eso tiene links y botones. Ademas que controlo la reinsersion de datos en caso de regresar a un formulario...

Creo que para evitar que mis frames me muestren el mensaje ese, frames que estan siempre presentes en tooodas las paginas mientras navego, voy a abrir el sistema en una pagina sin toolbar, menubar y demas... y evitar que se pueda apretar el boton derecho del mouse..

De todos modos estuve viendo estas opciones si a alguien le sirve para evitar ir atras:


OPCION 1:

Código HTML:
<script language="JavaScript">
<!--
  javascript:window.history.forward(1);
//-->
</script> 
Este script va en la pagina que no queremos que regrese, habria que ponerlo en toooodas las paginas, ya que si se hace 2 veces "atras" pues se salta la ejecucion del script.


OPCIONES 2:

Código HTML:
<html>
<head>
  <meta http-equiv="Expires" CONTENT="0">
  <meta http-equiv="Cache-Control" CONTENT="no-cache">
  <meta http-equiv="Pragma" CONTENT="no-cache">
</head>

o tambien:

<%
  Response.Buffer = True
  Response.ExpiresAbsolute = Now() - 1
  Response.Expires = 0
  Response.CacheControl = "no-cache"
%> 
Estas evitan que la pagina deseada no se cargue en la cache y no pueda ser mostrada cuando se regresa atras.



OPCION 3

Código HTML:
window.history.forward(1);
Este manejo tambien va en la ventana que no queremos regresar, pero igual se puede saltar con 2 "atras" y tendria que utilizarse en todas las paginas que se desea evitar regresar.


OPCION 4

Código HTML:
if (!(document.referrer)) {....}
Este condicional verifica que donde nos encontramos tenga ningun valor, lo que significa que se presiono back o forward. Tiene problemas con la primera y segunda pagina cargadas al inicio, en cuanto al back y forward. Es muy relativa su correctitud.


OPCION 5

Código PHP:
<body onload="Javascript:history.go(1);" onunload="Javascript:history.go(1);"
Al igual que los scripts tiene que estar en tooooodas la paginas que deseamos que no regresen.


y por ultimo


OPCION 6

Código:
<SCRIPT LANGUAGE="JAVASCRIPT">

var x="1";

var isBack;

function handleBackButton(){

isBack = (x != document._mine._a1.value);

document._mine._a1.value=2;

document._mine._a1.defaultValue=2;

if(isBack)

location.href="./pagina.aspx"

}

</SCRIPT>

Se tendria que ejecutar siempre al cargar la página:

<BODY ONLOAD="handleBackButton()">

Y que hace uso de:

<form name="_mine">

<INPUT type=hidden id="_a1" NAME="_a1" VALUE="1" STYLE="VISIBILITY:hidden">

</form>
Este codigo esta en ASP y sirve para agarrar la accion de que se apreto ATRAS y cuando se hace dicha accion se dirige a una pagina especifica.

Gracias a todos!
  #19 (permalink)  
Antiguo 14/06/2012, 11:06
Avatar de dolorosaclaridad  
Fecha de Ingreso: noviembre-2011
Mensajes: 45
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: evitar volver atras

y como puedo llevar esto http://www.cl.ient.es/sinatras.html a ASPX? en un webforms?
  #20 (permalink)  
Antiguo 14/06/2012, 11:27
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: evitar volver atras

Hola dolorosaclaridad

Te recuerdo el aviso que había al final de este tema y que parece que no has leído o no le has hecho ni caso.



Tema cerrado.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 07:49.