Archivo de la categoría: DEBUN_Javascript

Método Unescape en Javascript

En el proyecto actual en el que estoy trabajando, se ha creado una URL mediante la API de Java y se ha transmitido mediante una petición al navegador web.

Se ha producido un error en la transformación y su interpretación del navegador web de dicha URL dado que la cadena de texto obtenida por el navegador ha sido ésta:

http://www.direccion.es/dominio?param1=valor1&param2=valor2

Para solucionar el problema basta con utilizar el método unescape de Javascript.

Mediante este método se trata la cadena de texto recibida por parámetro de forma literal con lo que se eliminan las codificaciones especiales de la cadena de texto.

Dentro del proyecto, se ha utilizado este método para interpretar los caracteres que conforman la URL literalmente y así poder utilizarla en el método window.open de Javascript correctamente.

El código Javascript queda del  siguiente modo:

window.open(unescape(url), "popup2", "left=5,top=5,scrollbars=yes,resizable=yes,status=yes,width=" + (screen.availWidth - 20).toString() + ",height=" + (screen.availHeight - 100).toString());

Al hacer clic en el botón, se abre correctamente el pop up y se carga el contenido indicado por el enlace correctamente dado que el navegador puede interpretar la dirección web (URL) de forma literal y explícita.

A modo de resumen,  comentar que si desea que una cadena URL recibida por petición se trate correctamente debe emplearse el método unescape para ser tratada la cadena de forma literal.

Enlace:  http://www.w3schools.com/jsref/jsref_unescape.asp

Error de codificación Unicode en un mensaje Javascript

Descripción del Problema

Cuando se publica un mensaje que contiene un carácter en formato Unicode no muestra el texto correctamente. No se renderiza el carácter Unicode en Javascript sino que se muestra directamente la codificación

Análisia del Problema

En el fichero JSP contenedor se encuentra la siguiente llamada:

        <a  
                onclickreturn(confirm(«Mensaje de llamada previo al mu00E9todo?«));» 
                href=»<ruta_web_navegacion>»
        >

Cuando el navegador renderiza el botón y procesa la funcionalidad del atributo onclick no renderiza correctamente el texto contenido dentro de los confirm como carácter Unicode desde el Javascript, sino que lo interpreta como un string que forma parte de la cadena contenida dentro del confirm .

Solución

Hay que añadir en el JSP una sección Javascript donde se implementa la siguiente función:

        <script>
function metodo() {
return confirm(«Mensaje de llamada previo al mu00E9todo?»);
}
</script>

Esta nueva función renderiza directamente el texto contenido en el mensaje desde Javascript no desde HTML.

En el código HTML del enlace <a> hay que indicar en el atributo onclick el siguiente código para ejecutar correctamente la ventana confirm y posteriormente el envío del resultado al onclick del botón:      

       <a   
                onclickreturn(metodo());» 
                href=»<ruta_web_navegacion>»
        >

Esto permite que la codificación Unicode sea interpretada correctamente y se obtiene el carácter é lugar de la codificación ue00E9 cuando se muestra el mensaje por pantalla.

Detalle

El método confirm devuelve el resultado de la opción elegida cuando se abre la ventana mediante Javascript.

Lo que se está haciendo se redirigir este regreso (sea true o false) hacia el botón onclick de manera que se ejecute directamente o no según la selección de las opciones del confirm Javascript que se haya efectuado.

Imágenes con atributos alt

En desarrollos donde se emplee el tag <img> para que aparezca correctamente el mensaje al pasar por encima el ratón, será necesario añadir también el atributo title.

En el siguiente enlace se puede comprobar cómo funciona correctamente:

 

En la documentación oficial del W3Schools no aparece el atributo title

Todo parece indicar que es una especificación del IE10. No he sido capaz de encontrar un enlace donde oficialmente reste documentada esta implementación específica.

Sin embargo se confirma que si se utilizan los dos atributos (alt y title) conjuntamente se muestra correctamente el tip allí donde se haya aplicado y al pasar el ratón por encima aparece el mensaje de texto correctamente.

Closing a Window in Internet Explorer (All Versions)

I found this unique solution that allows us to close a windows (the window not opened through Javascript) using the Javascript window.close() method in IE where IE throws a prompt like «The Webpage you are viewing is trying to close the window. Do you want to close this window?»

Due to the security enhancements in IE, we can not close a window unless it is opened by an script.

The way to solve this problem consists in letting the browser thinks that the page is opened using an script so we can close the window easily.

Below you can see the implementation of the code:

<script type=»text/javascript»>

          functioncloseWP() {
                   var Browser = navigator.appName;
                   var indexB = Browser.indexOf(‘Explorer’);
 
                   if (indexB > 0) {
                          var indexV = navigator.userAgent.indexOf(‘MSIE’) + 5;
                          var Version = navigator.userAgent.substring(indexV, indexV + 1);
                          if (Version >= 7) {
                                  window.open(», ‘_self’, »);
                                  window.close();
                         } else if (Version == 6) {
                                             window.opener = null;
                                             window.close();
                                  } else {
                                            window.opener = »;
                                            window.close();
                                 }
 
                   } else {
                     window.close();
                   }
           }

</script>

The original source of this code can be found in this link.