Foros del Web » Programando para Internet » Javascript »

Ayuda con TypeWriter

Estas en el tema de Ayuda con TypeWriter en el foro de Javascript en Foros del Web. Hola! consegui este efecto de escritura pero solo funciona en Explorer, Opera , Netscape pero no en Mozilla Firefox, si alguien me lo remienda por ...
  #1 (permalink)  
Antiguo 22/09/2005, 09:08
Avatar de AJVEvoluzione  
Fecha de Ingreso: agosto-2004
Ubicación: Buenos Aires
Mensajes: 195
Antigüedad: 19 años, 8 meses
Puntos: 1
Exclamación Ayuda con TypeWriter

Hola! consegui este efecto de escritura pero solo funciona en Explorer, Opera , Netscape pero no en Mozilla Firefox, si alguien me lo remienda por favor Muchas gracias por su ayuda


Código:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title></title>
<style type="text/css">

BODY{

	margin-top: 0px;
    margin-left: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
background-attachment: fixed;
background-repeat: repeat;
background-position: 0 0;
}
</style>
</head>

<body onload="typeLayer()" onunload="clearTimeout(tID)" topMargin="0" bgcolor="#E8E8E8" background="back.JPG">
<script language="JavaScript">
<!--
var isIE4 = (navigator.appVersion.charAt(0)>=4 && (navigator.appVersion).indexOf("MSIE") != -1); 
var isNN4 = (navigator.appVersion.charAt(0)>=4 && (navigator.appName).indexOf("Netscape") != -1);
tID = 0;
i = 0;
spd  = 40; 
str= " Hola! esta es la maquina de escribir<br>Bienvenidos a mi sitio web, Texto de prueba, 1234 Texto - Texto de prueba, 1234 Texto "
function typeLayer() {
 if(i >  str.length){
  clearTimeout(tID);
 } else {
  msg = str.substring(0,i);
  if(isNN4 == true){
   document.layers['layer1'].document.write('<font color=#000000 font face=Times New Roman font weight= bold font-size= 12pt>'+msg+'</font>');
   document.layers['layer1'].document.close();
  }
  if(isIE4 == true){
   layer1.innerHTML = '<font color=#000000 font face=Times New Roman font weight= bold font-size= 12pt>'+msg+'</font>';
  }
  i++;
  tID = setTimeout("typeLayer()",spd);
 }
}
//-->
</script>


<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100%" valign="bottom" align="right">
    </td>
  </tr>
</table>

<p><span id="layer1"
style="LEFT: 140px; RIGHT: 140px; POSITION: absolute; TOP: 40px; color: rgb(0,0,0); font-family: Times New Roman; font-size: 12pt; font-weight: bold"></span>
</p>
<!--webbot bot="HTMLMarkup" startspan TAG="XBOT" --></SCRIPT><!--webbot bot="HTMLMarkup" endspan
-->
<script>
if (!document.layers)
document.write('<div id="divStayTopLeft" style="position:absolute">')
</script>
<layer id="divStayTopLeft">

</body>
</html>
  #2 (permalink)  
Antiguo 22/09/2005, 16:48
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola
Caramba, pues parece muy claro: tienes una variable y una acción para si es Explorer (supongo que Opera se está haciendo pasar por él) y otra para si es Netscape4, pero si es otro navegador no le indica que haga nada.
Creo que el código que se está ejecutando para IE (innerHTML) es perfectamente reconocido por Firefox, Mozilla y Netscape 7, o sea que tienes dos soluciones:
a) dejar que se ejecute ese código para todo lo que no sea Netscape4; puede que con algún navegador raro falle, pero de todos modos tal como está ahora no haría nada.
b) poner una condición para detectar navegadores Gecko y que haga lo mismo que para IE.

Por otro lado, dudo que tal como está escrito funcione:
<font color=#000000 font face=Times New Roman font weight= bold font-size= 12pt>
¡eso no es HTML!

Además, la detección de navegador debría hacerse por la función que se va a usar. Te propongo este cambio de código (he retocado varias cosas, si no entiendes algo pregunta):
Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>
<style type="text/css">

BODY{

	margin-top: 0px;
    margin-left: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
background-attachment: fixed;
background-repeat: repeat;
background-position: 0 0;
}
</style>
</head>

<body onload="typeLayer()" onunload="clearTimeout(tID)" topMargin="0" bgcolor="#E8E8E8" background="back.JPG">
<script type="text/javascript">
<!--
var isNN4 = (document.layers);
var isCompat = document.getElementById && document.body.innerHTML

tID = 0;
i = 0;
spd  = 40; 
str= " ¡Hola! ésta es la máquina de escribir<br>Bienvenidos a mi sitio web, Texto de prueba, 1234 Texto - Texto de prueba, 1234 Texto "
function typeLayer() {
 if(i >  str.length){
  clearTimeout(tID);
 } else {
  msg = str.substring(0,i);
  var msg = '<font color="#000000" face="Times New Roman" size="12pt"><b>'+msg+'</b></font>'
  if(isNN4){
   document.layers['layer1'].document.write(msg);
   document.layers['layer1'].document.close();
  }
  if(isCompat){
   document.getElementById('layer1').innerHTML = msg;
  }
  i++;
  tID = setTimeout("typeLayer()",spd);
 }
}
//-->
</script>


<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100%" valign="bottom" align="right">
    </td>
  </tr>
</table>

<p><span id="layer1"
style="LEFT: 140px; RIGHT: 140px; POSITION: absolute; TOP: 40px; color: rgb(0,0,0); font-family: 'Times New Roman'; font-size: 12pt; font-weight: bold"></span>
</p>
<!--webbot bot="HTMLMarkup" startspan TAG="XBOT" --></SCRIPT><!--webbot bot="HTMLMarkup" endspan
-->
<script type="text/javascript">
if (isNN4) document.write('<layer id="divStayTopLeft"></layer>')
else document.write('<div id="divStayTopLeft" style="position:absolute">')
</script>


</body>
</html> 
__________________
Angel :cool:
  #3 (permalink)  
Antiguo 24/09/2005, 01:23
Avatar de AJVEvoluzione  
Fecha de Ingreso: agosto-2004
Ubicación: Buenos Aires
Mensajes: 195
Antigüedad: 19 años, 8 meses
Puntos: 1
No me funciona

me tira muchos errores
  #4 (permalink)  
Antiguo 26/09/2005, 16:22
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
AJV, ¿Cuáles son esos "muchos errores"?
Copia el texto de arriba en un documento nuevo y pruébalo. Funciona en Firefox y en IE6.
__________________
Angel :cool:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:19.