Ver Mensaje Individual
  #11 (permalink)  
Antiguo 21/12/2003, 16:11
furoya
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Hola de nuevo :

Después de mucho tiempo regreso a este tema para redondear algunos conceptos y, finalmente, publicar el código que no quise publicar en su momento. Los motivos para ésto último fueron basicamente dos: no está hecho en JavaScript, y estaba seguro de que se podía mejorar. Para ser honesto, también hubo un tercer motivo; y es que -como intuyeron muchos foreros- sí es posible modificar una ventana ya abierta, pero lo dificil es desmentir a gurúes y otra gente que sabe más que uno después de esos categóricos mensajes de "no se puede" que son ( o eran, por suerte ya no se ven tanto ) tan comunes en este Sitio.

Luego de discutirlo con mi analista durante varias sesiones, llegamos a la conclusión de que ésto no podía ser un impedimento para la libre circulación de ideas ( que es el origen y fin de cualquier foro ), por lo que hoy me importa tres pitos quién diga que algo no se puede, si yo encuentro una manera de hacerlo, será posteado.

Como justificativo, puedo agregar que había una parte de verdad en aquellas negativas, y es que aún no es posible en JavaScript; pero sí en VBScript ( lo que nos devuelve al 'motivo uno' ), como no hay aquí un foro de VBS, lo puedo dejar en éste sin temor a que nuestros moderadores lo vayan a mover.

Con respecto al 'motivo dos', vamos a explicar brevemente en qué consiste el siguiente código para que se entienda qué quise perfeccionar y por qué ahora dudo de que me sea posible.

Ya mencioné que el modo Theater no existe ni siquiera en JScript, pero Visual lo reconoce, aunque con algunas limitaciones. La más grave es que no me funciona con self; por más vueltas que di, no logré hacer que el script apuntara hacia su misma ventana para modificarla. En un intento desesperado, terminé haciendo un loop que recorría todas las aplicaciones abiertas ( estas cosas en VBS se pueden ) y una vez que identificara la ventana en cuestión, le modificase la propiedades. Una vuelta increible, que llevaba un código aparentemente serio a la categoría de "truco".

Así las cosas, me guardé el script pensando: " algún día voy a aprender Visual de verdad y voy a terminar de escribr un código decente ... ". Pero unos meses después me llevé una sorpresa: alguien que aprendió muuuuucho más que yo había publicado un código enormemente más eficiente, ¡ pero con el mismo truco !. Entonces no me acomplejé más y decidí postear el mío.
Aquí va:

Código:
<html> 
<head> 
<title> FUNCIÓN [F11] .</title> 
<STYLE>
<!--
strong{font:900 90%}
// -->
</STYLE>
</head> 
<body > 
<h2>Modo <i>Theater</i> con botón ( en <strong>VBScript</strong> ). </h2>

<center><button style="border-width:4pt 4pt 8pt 4pt;border-color:beige;
background:bisque;height:40pt;width:30pt" id=F11><b>F11</b></button></center> 
<p>

<SCRIPT LANGUAGE=vbscript>

function F11_onclick
dim sA , i , A
set sA=createobject("shell.application")
i=0
Do Until sA.Windows.Item(i).LocationURL=Self.Location
i=i+1 
Loop
set A=sA.Windows.Item(i)
If A.TheaterMode=true Then
A.TheaterMode=false 
Else
A.TheaterMode=true 
end If
end function

</SCRIPT>
</body> 
</html>
Este otro escript hace basicamente lo mismo, pero mejor.

Código:
<html>
	<head>
		<title>Fullscreen</title>
<script language="VBScript">
<!--

Option Explicit
Dim apps
Dim win
Set apps = createobject("shell.application")
For Each win in apps.Windows
  If typename(win.Document) = "HTMLDocument" Then
	if win.Document.title = self.document.title then
		rem self.TheaterMode=true
		win.TheaterMode=True
	end if
  End If
Next

-->
</script>
	</head>
	<body>
		<h1>FullScreen</h1>
	</body>
</html>
La única objeción sería que para reconocer su propia ventana utiliza el título en vez de la dirección; algo que funciona bien hasta que te encuentras con con esos sitios que le ponen el mismo título a todas sus páginas: si hay más de una abierta, va a "maximizar" a todas. Pero eso es fácil de modificar, y no creo que al amigo Michael Harris (autor del código) le moleste.

Por fin, este código se puede adaptar para otros cambios; si alguien sabe de VBS y quiere postear sugerencias, supongo que este es un buen lugar para hacerlo. ( con el permiso de twinsen2, claro ).

Felicidades

furoya
P.D. : eldervaz, en lo que a mí respecta,y aunque un poco tarde, de nada por el código.