ventana regresar pagina net navegador evitar evento deshabilitar cierre cerrar capturar cache boton atras asp anterior asp.net internet-explorer-8 vbscript

asp.net - regresar - deshabilitar la cache y el boton atras del navegador



No compartir sesión y evitar los botones de navegación en el navegador al abrir la ventana de la aplicación (3)

Estamos utilizando el código de VBScript para abrir la ventana de la aplicación y evitar que los usuarios tengan navegación hacia adelante / atrás al abrir la ventana de IE8 .

Este es el código usado.

Set WshShell = CreateObject("shell.application") Set IE=CreateObject("InternetExplorer.Application") IE.menubar = 1 IE.toolbar = 0 IE.statusbar = 0 ''here we open the application url IE.navigate "http://www.google.com" IE.visible = 1 WshShell.AppActivate(IE)

Esto funciona bien, sin embargo, el problema es que si el usuario abre varias ventanas, las cookies de sesión se comparten a través de las ventanas.

Para esto también hay una solución que podemos usar la opción nomerge al abrir el IE

WshShell.ShellExecute "iexplore.exe", " -nomerge http://www.google.com", null, null, 1

Ahora queremos que ambas opciones estén disponibles. es decir, el usuario no debería poder navegar hacia adelante / atrás y, además, si se abren dos ventanas, los datos no deberían compartirse.

No pudimos lograr que ambas cosas funcionaran juntas.

Además, no queremos ningún modo de pantalla completa (es decir, después de presionar F11)

¿Alguien puede proporcionar la solución?

Gracias por adelantado.


Por lo que entiendo, las cookies se establecen por instancia. Varias ventanas del navegador seguirán siendo la misma instancia.

Es posible que pueda pasar una especie de parámetro de identificación que el programa rastrea, pero el navegador no. De esa forma, independientemente de cómo se ejecute el programa, tendrá su propia ID de "sesión".

Creo que puedes hacer esto con javascript y leerlo usando un campo oculto asp.net. Esto podría darle la singularidad que está buscando.

<asp:HiddenField ID="HiddenFieldSessionID" runat="server" /> protected void Page_Load(object sender, EventArgs e) { HiddenFieldSessionID.Value = Session.SessionID; } <script type="text/javascript"> function ShowSessionID() { var Hidden; Hidden = document.getElementById("HiddenFieldSessionID"); document.write(Hidden.value); } </script>


La solución mencionada en el enlace respondido por patmortech no es perfecta, ya que las cookies aún se comparten . Así que utilizamos la opción -nomerge en la variable AppToRun, que crea dos procesos cuando el usuario abre la aplicación dos veces en una sola máquina.

En IE8 si se abren dos exploradores de Internet, se fusionan en un solo proceso, por lo que la opción -nomerge que abre las instancias de IE8 en los procesos de diferencia.

On Error Resume Next AppURL = "http://www..com" AppToRun = "iexplore -nomerge" AboutBlankTitle = "Blank Page" LoadingMessage = "Loading ..." ErrorMessage = "An error occurred while loading . Please close the Internet Explorer with Blank Page and try again. If the problem continues please contact IT." EmptyTitle = "" ''Launch Internet Explorer in a separate process as a minimized window so we don''t see the toolbars disappearing dim WshShell set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run AppToRun, 6 dim objShell dim objShellWindows set objShell = CreateObject("Shell.Application") set objShellWindows = objShell.Windows dim ieStarted ieStarted = false dim ieError ieError = false dim seconds seconds = 0 while (not ieStarted) and (not ieError) and (seconds < 30) if (not objShellWindows is nothing) then dim objIE dim IE ''For each IE object for each objIE in objShellWindows if (not objIE is nothing) then if isObject(objIE.Document) then set IE = objIE.Document ''For each IE object that isn''t an activex control if VarType(IE) = 8 then if IE.title = EmptyTitle then if Err.Number = 0 then IE.Write LoadingMessage objIE.ToolBar = 0 objIE.StatusBar = 1 objIE.Navigate2 AppURL ieStarted = true else ''To see the full error comment out On Error Resume Next on line 1 MsgBox ErrorMessage Err.Clear ieError = true Exit For end if end if end if end if end if set IE = nothing set objIE = nothing Next end if WScript.sleep 1000 seconds = seconds + 1 wend set objShellWindows = nothing set objShell = nothing ''Activate the IE window and restore it success = WshShell.AppActivate(AboutBlankTitle) if success then WshShell.sendkeys "% r" ''restore end if