En el index de mi página he puesto este código:
<?php if($msg (' ')) { ?> var strCmd = "document.getElementById('system-message').style.display = 'none'"; var waitseconds = 3; var timeOutPeriod = waitseconds * 1000; var hideTimer = setTimeout(strCmd, timeOutPeriod);
En todos los navegadores funciona, a los 3 segundos desparece el mensaje, pero en IE7 me dice que hay un problema con el script y es normal porque siempre aparece el script, debería solo salir si se cumple la condición que haya un mensaje, por lo que IE7 me dice que no encuentra el objeto.
¿Alguna sugerencia?
Muchas gracias.
Un saludo.
Puedes poner el código de error que te está dando IE??, podría ser que el error no esté en este script, si no en un script que se ejecuta anteriormente, pero al fallar paraliza la ejecución de javascript en el navegador y por eso no se oculta el mensaje.
Saludos.
Hola,
Añado a lo que dice David que si pones la url para que podamos verlo será más fácil ver el fallo.
El IETester me arroja el siguiente fallo en IE7:
Línea 1 Carácter 1 Object required
El error está en este script (si lo quito ya no sale el error de script). La variable que recoge si hay mensajes no debe ser esa, le estoy diciendo que si esa variable no está vacia que realice el script, pero en todas las páginas sale el script, así que creo que la variable por lógica debería ser otra, una que recoja los mensajes activos.
La página si queréis verla es esta:
Página de prueba[/url]
El código tiene en la cabecera este código condicional: (no sé porque no ha salido en el primer mensaje que os había puesto)
***<?php if($msg (' ')) { ?>***
Y en el final: ***<?php } ?<***
Gracias por vuestro interés.
Saludos.
Hola Chisca, yo creo que no es necesario usar php para esto, prueba con este código a ver si no te da problemas:
window.onload = inicio;
function inicio(){
if(document.getElementById('system-message')){
var strCmd = "document.getElementById('system-message').style.display = 'none'";
var waitseconds = 3;
var timeOutPeriod = waitseconds * 1000;
var hideTimer = setTimeout(strCmd, timeOutPeriod);
}
}
Prueba poniendo esto en el fichero index.php de tu plantilla como un script de javascript normal y corriente y debería de funcionar. Ya nos cuentas.
Saludos.
Guauuuuuuuuuuuuu...funciona, funciona.
Ahora ya no sale ningún mensaje de error en el script.
Muchísimas gracias.
Saludos.
Hola Chisca,
Me alegro de que hayas podido solucionar tu problema 🙂
Por otra parte, como recomendación general, para evitar este tipo de incompatibilidades entre navegadores, te recomiendo que la próxima vez, investigues sobre el framework Mootools que incorpora Joomla, o un framework javascript adicional como jQuery, ya que de esta forma se evitan incompatibilidades entre navegadores y bastantes dolores de cabeza...
Saludos.
Hola David,
Yo intenté usar el script "sin éxito" :blush: no se porque no me funcionaba, cuando entiendo que su objetivo era abrir una ventana popup durante unos segundos en función de una variable de sesión ¿correcto?
Saludos
Hola gnumax,
no exactamente..
el objetivo del script de Chisca es ocultar el mensaje de error que muestra Joomla cuando se elimina algún registro/artículo/etc.. en Joomla. Si te fijas sale un mensaje que suele indicar algo así como "No se ha podido hacer X por el motivo Y", generalmente con fondo rojo.
Lo que hace el script es, pasados 3 segundos, ocultar este mensaje estableciendo la variable CSS "display" a "none", esto se hace estableciendo un contador con la función setTimeout.
Para ello se usa el DOM de javascript que permite modificar los CSS de un elemento de la página usando javascript.
El problema que le sucedía a Chisca es que no hacía la comprobación con un if para ver si el mensaje existía, lo que provocaba un error en IE que queda mal y que indicaba que el objeto al cual se le estaba intentando modificar la propiedad CSS no existía.
Saludos.
Hola David,
Pues si que estaba yo perdido, ufff!!! :S eso me pasa por leer tan rápido en vertical. Igualmente gracias por la explicación, ahora me quedo muy claro el uso del script aunque supongo que apagando la variable $display_errors en php se evitará ese tipo de avisos ¿no?
Saludos
Jejejeje,
bueno, en realidad tampoco, por que el error era de javascript no de PHP, por lo que la variable display_errors del php.ini poco tendría que hacer en este caso 🙂
Sí, la lectura trasversal es lo que tiene 😉
Saludos!
Hola David,
Gracias por la aclaración en mi confusión de conceptos 😆
En todo caso, ¿como podría hacer "por código" para que el index.php de la plantilla en cuestión abra en popup un modulo determina (una imagen) sin tener que instalar extensiones? pues pensé que ese era el objetivo del script y de ahí mi confusión.
Gracias