Foros del Web » Programando para Internet » ASPX (.net) »

Evitar refresco de pantalla

Estas en el tema de Evitar refresco de pantalla en el foro de ASPX (.net) en Foros del Web. Buenas. ¿Hay algún modo de evitar que el usuario de una web actualice la pantalla pulsando sobre actualizar o F5? Gracias....
  #1 (permalink)  
Antiguo 03/01/2007, 07:54
Avatar de peloteitor  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 849
Antigüedad: 20 años, 5 meses
Puntos: 1
Evitar refresco de pantalla

Buenas.

¿Hay algún modo de evitar que el usuario de una web actualice la pantalla pulsando sobre actualizar o F5?

Gracias.
__________________
El sexo sin amor es una experiencia vacía. Pero como experiencia vacía es una de las mejores.

Woody Allen
  #2 (permalink)  
Antiguo 04/01/2007, 17:09
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Evitar refresco de pantalla

hola, tengo esta funcion, haber si te sirve, nunca he sabido quitar el autopostback

if(window.event && window.event.keyCode==116)
{
alert('Alerta presionaste F5');
window.event.keyCode = 0;
return false;
}
}

<body class="bienvenida" onkeydown="dos();">
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #3 (permalink)  
Antiguo 11/01/2007, 11:02
 
Fecha de Ingreso: junio-2006
Mensajes: 109
Antigüedad: 17 años, 10 meses
Puntos: 2
Re: Evitar refresco de pantalla

Puedes validar cuando el usuario le de a la tecla F5 o que que le al mouse click derecho y luego refresh.

yo tengo la siguiente función en una pagina base :

#Region "Refresh(F5)"
Public ReadOnly Property IsRefresh() As Boolean
Get
Return _isRefresh
End Get
End Property

Private _refreshState As Boolean
Private _isRefresh As Boolean

Protected Overrides Sub LoadViewState(ByVal savedState As Object)
Dim AllStates As Object() = savedState
MyBase.LoadViewState(AllStates(0))
_refreshState = Boolean.Parse(AllStates(1))
_isRefresh = _refreshState = Session("__ISREFRESH")
End Sub

Protected Overrides Function SaveViewState() As Object
Session("__ISREFRESH") = _refreshState
Dim AllStates() As Object = New Object(2) {}
AllStates(0) = MyBase.SaveViewState
AllStates(1) = Not (_refreshState)
Return AllStates
End Function

#End Region

Luego en el evento Load de la pagina base colocamos:
Me.Page.Response.Cache.SetNoStore()
Me.Page.Response.AddHeader("PRAGMA", "NOCACHE")
Me.Page.Response.Expires = -1
Me.Page.Response.Cache.SetCacheability(HttpCacheab ility.NoCache)

Con eso puedes mandar llamar la propiedad IsRefresh() la cual te regresa un boolean con un true si es un refresh y un false si no lo es. Puedes colocar una validación sobre todo en los eventos que afectan base de datos para que no hagas dos viajes a la misma...

Saludos espero te ayude
  #4 (permalink)  
Antiguo 12/01/2007, 09:34
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Evitar refresco de pantalla

sabes, voy a probar, pero la voy a traducir a c# para ver como funciona ahi, de todas formas que bueno que ya lograste tu objetivo, saludos...
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #5 (permalink)  
Antiguo 06/03/2007, 15:07
 
Fecha de Ingreso: junio-2006
Mensajes: 109
Antigüedad: 17 años, 10 meses
Puntos: 2
Re: Evitar refresco de pantalla

Yo utilizo una página base de la cual heredo mis páginas y sobreescribes el Load de las páginas. Así puedo utilizar esta función en todas las páginas que heredan mi página base.

Te paso el código en C#...

Código:
#region Refresh(F5)

protected override object SaveViewState()
{
	Session["__ISREFRESH"] = _refreshState;
	object[] allStates = new object[2];
	allStates[0] = base.SaveViewState();
	allStates[1] = !_refreshState;
	return allStates;
}

protected override void LoadViewState(object savedState)
{
	object[] allStates = (object[]) savedState;
	base.LoadViewState(allStates[0]);
	_refreshState = (bool) allStates[1];
	_isRefresh = _refreshState == (bool) Session["__ISREFRESH"];
}

private bool _refreshState;
private bool _isRefresh;

public bool IsRefresh
{
	get
	{
		return _isRefresh;
	}
}

#endregion

Suerte
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:59.