Ante todo mis excusas, Federico: Podría interpretarse por el comienzo de mi
anterior mensaje que te reprocho no estudiar, lo que nunca fue mi intención.
Pretendía con ello decir que este es un problema bastante básico, pero mis
palabras no fueron las correctas. Repito, mil perdones.
Precísamente porque la instrucción nativa void indica que la función no
retorna un valor, es por lo que es adecuada en este caso. De otra manera el
server puede (y debe) interpretar que existe un objeto -en este caso un
objeto ventana- esperando respuesta de la funcion.
No es que los ingenieros programadores que hicieron Flash no supieran de
esto (no es cosa de flash en este caso sino del javascript al que se llama
desde una función de Flash), sino de la manera de programar:
A la manera ortodoxa, por decirlo así, de utilizar los lenguajes de
programación le llamamos 'strict data typing', o en mal castellano 'tipado
estricto de datos'. Mediante esta manera los programadores nos obligamos a
definir en las funciones el tipo de datos que manejamos y los retornos de
las funciones, so pena de obtener en los depuradores (debugers) de los
compiladores de código, unos errores que impiden la compilación. ¿Para qué
asumimos estas nuevas obligaciones?, pues precisamente para detectar y poder
evitar errores como el que comentamos.
Pero algunos lenguajes de programación comenzaron su andadura sin tener
presente los estándares de programación, por lo que la implementación del
strict data typing era imposible. Action Script, por ejemplo, solo lo
consiguió a partir de la versión 2 del lenguaje -con Macromedia Flash 8- y
muchos otros andan aún en ello.
Lo que sucedió durante la elaboración de IE es algo tan confuso, y repleto
de injerencias empresariales que nada tienen que ver con los lenguajes de
programación, que sería demasiado largo de contar. No obstante desconocemos
el código C++ en el que está implementado IE, ya que forma parte del sistema
operativo windows, con el que se haya profusamente entrelazado, y no solo es
secreto y privado sino secretista y privativo.
Mozilla Firefox interpreta bien tus intenciones de abrir una nueva ventana,
aunque hayas 'escrito mal' (de manera poco ortodoxa, quiero decir) la
instrucción. Esto sucede porque, hartos de encontrarse con este problema,
terminan por asumirlo e implementar en su navegador el código que interpreta
tu órden de la manera más habitual, pero ello no significa que sea Mozilla
el que funciona de la manera correcta (de hecho es IE el que lo hace), sino
que Mozilla ha tapado este parche tan frecuente y ha asumido con ello una
mala práxis de algunos programadores.
Salu2
`8¬]
Juan Muro
Post by FedericoTe aseguro que estudio bastante, pero insisto en mi teoría de que el mundo
de la programación es sumamente arduo. He preguntado en foros dónde hay
personas que saben mucho más que yo y no supieron qué decirme.
Conozco lo que hace la instrucción VOID, mi pregunta es, y qué importa lo
que hace en este caso? Esa instrucción indica que la función no retorna un
valor. Me pregunto si la gente que hizo Flash y la que hizo IE no lo
saben, si la función no retorna un valor no me explico porque tengo que
utilizar una instrucción que indique eso. Me parece que es Mozilla el que
funciona de manera correcta.
Te mando un saludo.
Federico
Post by Juan MuroNo Federico, no es difícil, solo hay que estudiar. El void es la orden de
no retorno en muchos lenguajes de programación, no solo en java y
javascript. Con ella le indicamos a la función que no tiene que
devolvernos un valor de datos. Lo extraño del caso es que la
bien-interprete Microsoft, que siempre se ha distinguido por su
programación farragosa y su falta de ortodoxia en las sintaxis de los
lenguajes, y sin embargo sí que cuele en Mozilla y otros, que respetan
más los estándares.
Ya ves que nada es verdad ni es mentira, todo se ve según el color del
cristal con que se mira.
Salu2
`8¬]
Juan Muro
Post by FedericoMil gracias, justo ayer, después de dos o tres semanas de investigar,
encontré a alguien en Internet dando el mismo consejo que vos y así pude
resolver el problema. Que difícil es programar no?
Saludos.
Federico
Post by Juan MuroA la función de javascript le debes meter un void para que no retorne
on (release) {
getURL
("javascript:void(window.open('../HTML/pop_up2.htm','popup','toolbar=no,menubar=no,scrollbars=no,resizable=no,width=400,height=550'))");
}
Salu2
`8¬]
Juan Muro
Post by FedericoEstoy usando javascript desde mi Flash 8 P. La instrucción es simple y
getURL("JavaScript:ventana=window.open('pagina.html')");
Este código lo coloco en el evento Press o Release de un botón.
El asunto es que este código tiene un comportamiento en IE y otro, por
ejemplo, en SAFARI. El comportamiento que espero es el que se produce
en SAFARI. El navegante presiona el botón y se abre la ventana nueva
pero el Flash en el que se encuentra el botón sigue ahí.
En cambio, en IE, luego de presionar el botón, además de abrirse la
ventana nueva, la ventana donde se encuentra el botón carga una página
en blanco que sólo dice [object]
Esto es un misterio y no sé cómo resolverlo.
Cualquier comentario puede ayudarme.
Muchas gracias.
Federico