Oviedo José-ph
aprende, genera conocimiento y comparte
   
 
 

Office OpenXML no debe ser ISO 29500

JavaScript

He estado probando Meteora y Mootools para un buscador de teléfonos y en Firefox me funciona de maravilla pero al querer probar la aplicación en Internet Explorer 7 me aparece el siguiente error:

Could not complete the operation due to error c00ce56e

Y al probar la página en Internet Explorer 6 me aparece otro error muy diferente a el del IE7

System error: -1072896658

La solución para eliminar el problema del IE7 y del IE6 es quitar el encabezado del content type de mi archivo que mando llamar mediante Ajax.

header('Content-Type: text/plain; charset=utf8');
 

Eliminando esa parte de código ya funciona correctamente la página web, ahora solo falta saber el porque del error que solo aparece en el Internet Explorer??, pues la verdad quien sabe pero ya ven que el IE simplemente es un asco para visualizar páginas web (y yo que pensaba que la versión 7 hiba a ser mas compatible pero nada de nada)

[actualizado] Me acabo de dar cuenta que el resultado de mi Ajax no se ve bien los acentos debido a la codificación ya que necesito utilizar UTF-8 porque en el encabezado de mi página manejo:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 

y cuando me regresaba el resultado del Ajax pues como quite el content type pues ya me fallaba el asunto, así que para solucionar el problema del UTF y de la misma forma no afecte el error del IE solo se tiene que agregar la siguiente linea:

header('Content-type: application/xhtml+xml; charset=utf-8');
 

Y listo!, todo funciona como debe de ser face-glasses.png

He estado probando el sitio de un cliente con los diferentes Navegadores (Firefox, IE6, IE7, Safari y Opera) y para variar he tenido más de algún problema, ya saben con quien!!, claro!! con el Internet Explorer 7 y no se diga con la versión 6 del IE (todo un asco de navegador).

Bueno, la cosa esta en que quiero editar dinamicamente mediante Javascript el valor de la propiedad CLASS (clase en español jeje) y al utilizar la propiedad setAttribute('class',"NOMBRE_CLASE") en el Explorer nomas no se realiza el cambio y en los demas navegadores todo va de maravilla.

Ahora bien, después de investigar un poco he encontrado que el IE no soporta el atributo class y en lugar de eso utiliza uno llamado className.

Como he utilizado prototype para mayor compatibilidad solo es necesario poner el siguiente código:

if(Prototype.Browser.IE){
        $('etiqueta_ID_de_la_pagina').setAttribute("className","Nombre_de_mi_Clase");
  }else{
        $('etiqueta_ID_de_la_pagina').setAttribute("class","Nombre_de_mi_Clase");
  }
 

La verdad esta muy fácil de entender, solo es cosa de agregar las librerías del prototype y usar la clausula del IF la cual nos indica si es Internet Exploder entonces se procede con el className y si es cualquier otro navegador decente se procede con el atributo class, asi de fácil.

oviedo | Linux - Software Libre, JavaScript, Jaws | 27 Febrero, 12:40am | Comentar acerca de esto

He estado probando el sitio de un cliente con los diferentes Navegadores (Firefox, IE6, IE7, Safari y Opera) y para variar he tenido más de algún problema, ya saben con quien!!, claro!! con el Internet Explorer 7 y no se diga con la versión 6 del IE (todo un asco de navegador)

Bueno, la cosa esta en que quiero editar dinamicamente mediante Javascript el valor de la propiedad CLASS (clase en español jeje) y al utilizar la propiedad setAttribute('class',"NOMBRE_CLASE") en el Explorer nomas no se realiza el cambio y en los demas navegadores todo va de maravilla.

Ahora bien, después de investigar un poco he encontrado que el IE no soporta el atributo class y en lugar de eso utiliza uno llamado className.

Como he utilizado prototype para mayor compatibilidad solo es necesario poner el siguiente código:

if(Prototype.Browser.IE){
        $('etiqueta_ID_de_la_pagina').setAttribute("className","Nombre_de_mi_Clase");
  }else{
        $('etiqueta_ID_de_la_pagina').setAttribute("class","Nombre_de_mi_Clase");
  }
 

La verdad esta muy fácil de entender, solo es cosa de agregar las librerías del prototype y usar la clausula del IF la cual nos indica si es Internet Exploder entonces se procede con el className y si es cualquier otro navegador decente se procede con el atributo class, asi de fácil.

oviedo | Linux - Software Libre, JavaScript, Jaws | 27 Febrero, 12:40am | Comentar acerca de esto

En internet explorer 6 me aparecía el siguiente error en el debuger del IE:

Line: 2
Char: 1
Error: Syntax error
Code: 0
URL: http://oviedos.com.mx/index.php

Lo más curioso es que a veces me aparecia en algunas paginas y en otras no aparecía y tenían los mismos encabezados, hasta que encontre el problema: Utilizo un la etiqueta BASE, pero ejecutaba código javascript antes mediante un archivo externo de JS, osease tenia algo asi:

< !--[if lt IE 7]>
< script src="carpetajs/archivo.js" type="text/javascript"></script>
< ![endif]-->
<base href="http://oviedos.com.mx/aplicacion/index.php" />
 

Osease que todas las rutas estan ligadas a lo que se encuentre en BASE, pero el archivo de JS lo queria cargar antes y pues no encontraba la ruta, asi que la solución es primero poner el BASE y despues ya lo del Javascript, quedando algo asi:

<base href="http://oviedos.com.mx/aplicacion/index.php" />
< !--[if lt IE 7]>
< script src="carpetajs/archivo.js" type="text/javascript"></script>
< ![endif]-->
 

Y listo! no más error en el explorer 6 (en los otros navegadores, Safari, Firefox, Explorer 7 y Opera no me aparecía ese error)

Después de instalar la versión 1.6.0.2 de prototype me aparecía el siguiente error en Firefox

too much recursion

Y buscando la linea de codigo del error me encontraba con el siguiente codigo:

return __method.apply(null, [this].concat($A(arguments)));
 
el cual pertenece a la función methodize: function() {

Y para variar en Internet Explorer tenia un bonito mensaje de:

Stack overflow at line: 0

La solución a este problema es actualizar la librería scriptaculous ya que yo tenia la versión 1.7.0 y la cambie por la 1.8.1 y listo! no más mensajes molestos de errores.

Hoy me fije que me apareció el siguiente error en la consola de error de javascript en Firefox:

Error: uncaught exception: Permission denied to get property HTMLDivElement.parentNode

ó que es lo mismo pero en español.

Error: uncaught exception: Permiso para obtener la propiedad HTMLDivElement.parentNode denegado

Primero pensé que era la libreria de javascript prototype ya que la había actualizado a la versión 1.6.0.2 asi que la regrese a la versión 1.5.0 que es con la que estoy trabajando en un proyecto de envío de mensajes vía SMS, pero aun así me aparecia el mismo error, luego pense que se trataba de la propiedad innerHTML ya que habia leido que tenia problemas en InternetExplorer y todas las peticiones con innerHTML las cambie por la función replaceHtml que encontre en el sitio de anieto2k pero aun así tenia el mismo problema.

Luego observe que solo me aparecia cuando le daba click en las cajas de texto ( input type="text" ) o escribia algo en dichas cajas, lo cual me parecia un más raro, y despues de buscar y buscar en Google encontre la solución al problema del HTMLDivElement.parentNode

En primera nunca pense que tenia relación el problema con la librería CalendarPopup la cual permite visualizar un calendario con muchisimas funciones interesantes. y bueno lo unico que se tiene que hacer es remplazar todo lo que diga:

var t = e.originalTarget;
 
por la siguiente linea:
var t = e.target;
 

La verdad esta muuy fácil la solución, pero bueno, cuando uno no tiene ni la mas minima idea del error esto se vuelve realmente complicado.

Hoy tuve que agregar un atributo NAME a la página web de compra y venta de equipo médico, Medicalmex ya que tengo un menú y queria que al picarle en las opciones me mandara a una sección definida de la página, de ahi que se utiliza el atributo NAME dentro de una etiqueta A (para enlaces), teniendo algo como: Pie de página y mandar llamarla de la siguiente forma: Ir al pie de página, hasta este punto todo muy normal con la sintaxis HTML , pero el problema empieza cuando tenemos un elemento llamado BASE, el cual nos permite cambiar la dirección principal para cuando utilice una página con ruta relativa tome la base y complete el URL (jeje, no se me hagan bolas tongue.png ), algo como sigue:

Tenemos nuestra página www.oviedos.com.mx y cuando mandamos llamar la página index.php el navegador automaticamente agrega www.oviedos.com.mx ya que es el sitio web que estamos visitando en este momento, pero que ta si no queremos que al picarle en cualquier liga de la página nos mande llamar a http://www.oviedos.com.mx sino que queremos que llame http://start.oviedos.com.mx, haaa!! pues una solución es utilizar y listo!!! todas las páginas mandaran llamar los links como si fueran de la dirección BASE..., un poco mas claro no???

Entonces si mezclamos NAME con BASE tenemos un problemon!!, ya que si estamos en la página index.php/pages/1.html y mandamos llamar con NAME #abajo deberia quedar index.php/pages/1.html#abajo hasta aquí todo bien!! si no fuera porque nos queda index.php#abajo ya que en nuestra etiqueta BASE tenemos y ahi es donde empiezan los problemas!!, ahora bien la solución a todo esto es utilizar JavaScript face-wink.png

El algoritmo que utilizaremos es:

  • Obtener la cadena del URL actual
  • Contar con el valor de NAME a el que queremos dirigirnos en la página
  • Buscar el cualquier valor NAME en la cadena URL, osease que comience con gato #
  • Si se encontro el valor NAME se debe eliminar y dejar la cadena URL sin esa información
  • Concatenar el nuevo valor NAME a la URL ya parseada
  • Mandar llamar la nueva página web.
function hrefbase(tagname){
        var newText = "";
        searchTerm = "#";
        var i = -1;
        var  bodyText = location.href;
        i = bodyText.indexOf(searchTerm, i+1);               
                if (i <0) {
                        newText = bodyText;               
                } else {
                        newText = bodyText.substring(0, i);               
                }
        location.href=''+newText+searchTerm+tagname;
}
 

Solo se tiene que mandar llamar la función hrefbase con el parametro que es la etiqueta NAME a la cual queremos ir y listo!!, una forma practica es mediante el evento ONCLICK:

<div ONCLICK="javascript:hrefbase('pagina_abajo');">Ir al pie de página</div>
 

Despues pueden utilizar alguna hoja de estilo CSS para darle un formato más adecuado, ya se poniendo una linea de subrayado ( text-decoration: underline; ), o la manita del cursor como si fuera un enlace ( cursor: pointer; ).

oviedo | Linux - Software Libre, PHP, JavaScript | 23 Octubre, 1:15am | Comentar acerca de esto

Para variar el Internet Explorer (aka, Internet Exploder) no tiene buen soporte para Javascript, porque lo digo!, facil, traten de aplicar a X widget (jeje, ya se me esta pegando esto del Piwi de Jaws) un atributo con setAttribute en especial el onclick que es el que ando utilizando para un proyecto de un sistema de recordatorio de medicamentos en francia

La cosa esta así, uso Jaws con JSpan para todo lo de Ajax y Javascript que a su vez usan prototype para eso de la sintaxis:

Codigo que chafea en el IE.

$('delete_button').setAttribute('onclick','newBene();')
 

Aqui la cosa esta que el Internet Exploder NUNCA reconoce el atributo onclick!..., despues de investigar un poco doy con una página en Frances (jeje, que casualidad que esta en frances.., ya parace que poco a poco voy aprendiendo el idioma) que indica la solucion a nuestros problemas.

$('delete_button').onclick = function(){ newBene(); }
 

Cual es la diferencia???..., pues que ya no usamos setAttribute sino que especificamos como un atributo de la funcion delete_button (tiene esa sintaxis rara tipo PHP gracias a prototype) y despues lo igualamos a nuestra funcion, que en este caso es newBene() y listo!...

Ahora tengo otro problema que no puedo crear controles input ni hidden ni cualquier otro tipo en IE con Javascript y recibirlos mediante PHP (me imagino que en ASP tambien seria algun error) por eso digo y sigo insistiendo que el Internet Explorer apestaaa!..., y aunque me digan que es lo que usa la gente!., espero en un futuro no muy lejano que ya no sea el navegador predeterminado de las computadoras!. en verdad se los dice un programador web que vive dia a dia con estos problemas de incompatibilidad con explorer!.. porfas!..., INSTALEN FIREFOX u otro navegador descente en las compus de sus amigos, trabajo, casa, escuela!...

oviedo | JavaScript | 18 Junio, 3:49pm | Comentar acerca de esto

Pues con eso de que me la he pasado programe y programe (se nota debido a la falta de mensajes en el blog) en Jaws ha llegado el momento de utilizar un buscador en donde nos suguiera las coincidencias todo mediante Ajax!..., asì que me di a la tarea de buscar algo de eso!..., bueno en realidad ya habia probado uno pero me gustaria uno que tuviera un scroll para cuando sean muchos resultados y que a su vez al picarle un click fuera desaparecieran los resultados..., asi que todavia estoy en esas!...,

Bueno, el motivo tambien de este mensaje es compartirles esta wiki referente a Ajax! (AjaxPatterns.org)..., y aunque esta en ingles se me hace muy completo ya que explican muchas cosas y vienen muchoooos ejemplos, desde como crear un suggest, herramientas para manipular Ajax o hasta los diferentes Frameworks tanto de lenguajes de programaciòn como de efectos..,

La verdad si estan metidos en este rollo de Ajax, o quieren saber un poquitin más, les recomiendo el wiki de Ajax.

He encontrado un sitio donde nos dice como poner nuestro Completador al estilo de Google Suggest, creo que me quedo por lo pronto con este ya que se ve bonito!. jeje.... el nombre oficial del Framework es: AjaxAC - Open-souce PHP framework for AJAX aqui tienen la versión pirachina jejeje..., se llama GoogleSuggestCloneJax (original el nombre), ya veremos que tan facil es integrarlo a Jaws face-smile-big.png

oviedo | Trucos, PHP, JavaScript | 31 Mayo, 12:16am | 2 comentarios

Voy a inaugurar la sección de JavaScript con un pequeñin truco para manipular un array asociativo. Para los que conozcan de programación existen 2 tipos de arreglos:

  • Indice númerico (solo números para el indice)
  • Asociativos (el indice es un caracter alfanumerico)

Ahora bien!, para declarar nuestro arreglo en JavaScript procedemos con la siguiente instrucción:

var MiArreglo = new Array();
 

Hay que recordar que para crear un arreglo (no importa de que tipo), se utiliza la misma instrucción de arriba, claro!! cambiando el nombre MiArreglo por el nombre de tu variable face-wink.png (no olvides agregar var para indicar que inicializas una variable)

Ahora viene lo divertido!, vamos a ponerle datos a nuestro arreglo face-smile-big.png

MiArreglo["nombre"] = "Jose";
MiArreglo["apellido"] = "Oviedo";
MiArreglo["web"] = "oviedos.com.mx";
 

Aquí estamos declarando 3 posiciones en nuestro arreglo, las cuales se llaman nombre, apellido y web, en lugar de tener numeros del 0 al 2 (como en los arreglos normales), ahora bien!, para poder sacar un dato es facil, solo hacemos referencia a la posición de nuestro arreglo, por ejemplo si queremos obtener la web solo tenemos que poner:

alert(MiArreglo["web"]);
 

Con esto nos imprime (alert) la página web, pero que pasa si no conocemos los nombres de los indices de nuestro arreglo??..., para recorrer todo el arreglo utilizamos el ciclo for, pero no el tipico de i=0;icode]

Que hace este ciclo??, primero inicializamos nuestra variable llamada i, y le decimos que recorrar nuestro arreglo (instruccion in), y bueno!!, despues se imprime el valor de nuestro array con la posicion i, que en realidad es el nombre de nuestro indice!..., facil no??...face-smile-big.png

oviedo | JavaScript | 6 Octubre, 7:30pm | 3 comentarios

Principal


Suscribete al servicio sindicalizado de Oviedos.com.mx

Top Blogs México

Conversación

oviedo: Hola Sergio, nomas me doy un tiempo ya que he estado super ocupado estos dias con el trabajo y completo el manualito de deny host!.

Saludos!.  
sergio morales: oye brother podrias terminar el tuto de deny host es muy interesante por ahi hay un error el cual
para nada serviria el deny host ya que blokearia el acces ssh

Saludos  
oviedo: Si ya ves ese Javascript con el IE no se llevan bien!! por cierto! si pones codigo Javascript para ver las contraseñas pues mas errores! jaja..., ni pex!! el Jaws bloqueo el codigo tongue.png  
erufenix: Por aquí pasando a saludar orales no pus muchos errores con javascript  
xiam: Que tal, te dejé un comentario pero no salió ni dió mensaje de error, en donde me puedo comunicar contigo?  
jesux: Saludos Olviedos, disculpa una pregunta. Como pones esos pedazos de cóface-smile-big.png igo en tus post ??  
oviedo: Ruth me temo decirte que no tengo ninguna licencia de SCO face-sad.png , porque mejor no te cambias a Linux o algun BSD??, asi no te preocupas por licencias.
Saludos  
Ruth: Hola, oye por favor, me urge una licencia del sco 5.0.7 por favor pasame la que tienes si? si? si? me super urge por favor!!!!  
lucas: les deseo lo mejor  
Zulma: Felíz día Joe face-smile.png
Te amo  
Jacqueline: Hola:
Yo tengo una parejita de xolitos, y estan super lindos tus perros, saludos desde el DF  
Phylevn: Interesante blog..
saludos face-smile-big.png  
Vael: Donde puedo descargar tu tema de jaws. También busco otros que no sean los que vienen en la instalación. Gracias. face-smile.png  
erufenix: Orales pues por aquí pasando a saludar, tenia un buen que no daba vuelta por estos lares, desde que dejo de funcar planet jaws  
FreeDownloas: Gracias por ciertas ayudas. Es un gusto ke la gente comparta conocimiento alrededor del mundo! Acabo de hacer funcionar algunos USB gadgets en VirtualBox  
pepe oviedo: Hola a todos! nuevamente funciona este mini chat!...,
Saludos desde Colima face-smile.png  
:



:

:

Escribe el código Captcha que estás viendo


Categorías

Amigos

Damog
Pelogo
Planeta Scouts
Almsx
Mis Algoritmos
Geesus
Planeta Linux MX
Jesús Carillo
Comic - Gil
Exal

Mi musica

 
  © Oviedo José-ph
Powered by Jaws Project