Foros del Web » Programando para Internet » Javascript »

DOM Firefox, IE, Chrome, etc...

Estas en el tema de DOM Firefox, IE, Chrome, etc... en el foro de Javascript en Foros del Web. Buenas!!! Puede que este tema sea haya tratado muchas veces, pero me puede decir alguien como usar los DOM para cada navegador o donde encontrar ...
  #1 (permalink)  
Antiguo 15/04/2009, 13:50
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
DOM Firefox, IE, Chrome, etc...

Buenas!!!

Puede que este tema sea haya tratado muchas veces, pero me puede decir alguien como usar los DOM para cada navegador o donde encontrar equivalencias para poder hacer funcionar un codigo javascript en todos los navegadores... Este estoy harto de buscar tantas cosas y todo lo que hay en la pagina de W3C solo funciona perfectamente en Firefox, los demas no dan ni una...
  #2 (permalink)  
Antiguo 15/04/2009, 13:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: DOM Firefox, IE, Chrome, etc...

En realidad, la mayoría de los navegadores siguen el estándar DOM a excepción de Internet Explorer, ¿hay algún caso específico en el que tienes problemas?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 15/04/2009, 14:10
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: DOM Firefox, IE, Chrome, etc...

Tengo por ejemplo este codigo... se supone que al cambiar una opcion del <select> me cambia el texto que hay en un <textarea>... Solo funcion con Firefox, para los demas nada... solo quiero saber, que hago mal para que solo me funcione con Firefox...

Código javascript:
Ver original
  1. <div class="box">
  2.                 <fieldset>
  3.                     <legend><?php echo $lang['QUESTION_LEGEND_UPDATE']; ?></legend>
  4.                     <?php
  5.                     $sql = 'SELECT * FROM ' .$prefix. 'preguntes ORDER BY `id_pregunta` DESC;';
  6.                     $query = $mysql_con->Consulta($sql);
  7.                     if($mysql_con->NumFilas() == 0)
  8.                     {
  9.                         echo '<b>' .$lang['QUERY_ZERO']. '</b>';
  10.                     }
  11.                     else
  12.                     {
  13.                     ?>
  14.                         <script type="text/javascript">
  15.                             var n = new Array();
  16.                             var s = new Array();
  17.                             var ind = 0;
  18.                         </script>
  19.                         <?php
  20.                         while($data = $mysql_con->VerDatos($query))
  21.                         {
  22.                         ?>
  23.                             <script type="text/javascript">;               
  24.                                 n["<?PHP echo $data->sid_pregunta; ?>"] = "<?PHP echo str_replace("\r\n","\\n",$data->pregunta);?>";
  25.                                 s[ind] = "<?PHP echo $data->sid_pregunta; ?>";
  26.                                 ind++;
  27.                             </script>
  28.                         <?php
  29.                         }
  30.                         ?>
  31.                         <script type="text/javascript"><!--//--><![CDATA[//><!--
  32.                         function show_select()
  33.                         {
  34.                             var i = 0;
  35.                             var se = document.getElementById("select");
  36.                             for(i = 0; i < s.length; i++)
  37.                             {
  38.                                 var o = document.createElement("option");
  39.                                 var t = document.createTextNode(n[s[i]].substr(0,50)+"...");
  40.                                        
  41.                                 o.setAttribute("onclick","(show_preg('"+s[i]+"'));");
  42.                                 o.appendChild(t);
  43.                                 se.appendChild(o);
  44.                             }
  45.                             show_preg(s[0]);
  46.                         }
  47.                        
  48.                         function show_preg(id)
  49.                         {
  50.                             document.getElementById("preg_name").value = n[id];
  51.                             document.getElementById("preg_s").value = id;
  52.                         }              
  53.                         //--><!]]></script>
  54.                            
  55.                         <form action="<?php echo $root_path. 'functions/ctrlmysql.' .$phpEx; ?>" method="get" onsubmit="return(true);">
  56.                             <select id="select"><!--<option></option>--></select><br />
  57.                             <textarea id="preg_name" name="new_question" rows="5" cols="50"></textarea>
  58.                             <input type="hidden" name="preg_s" id="preg_s" value=""/><br />
  59.                             <input type="hidden" name="table" value="<?php echo 'preguntes'; ?>" />
  60.                             <input type="hidden" name="uri" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
  61.                             <input type="submit" name="do" value="<?php echo $lang['UPDATE'] ?>"/>
  62.                             <input type="submit" name="do" value="<?php echo $lang['DELETE'] ?>"/>
  63.                         </form>
  64.                         <?php
  65.                     }
  66.                     echo $mysql_con->VerError();
  67.                     ?>
  68.                 </fieldset>
  69.             </div>
  #4 (permalink)  
Antiguo 15/04/2009, 14:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: DOM Firefox, IE, Chrome, etc...

No uses setAttribute para asignar funciones de captura de eventos. Mejor usa:
Código javascript:
Ver original
  1. o.onclick = function() {
  2.     /* Código */
  3. }
O, mejor:
Código javascript:
Ver original
  1. if (o.addEventListener) {
  2.     o.addEventListener('click', function() { /* Código */ }, false);
  3. } else {
  4.     o.attachEvent('onclick', function() { /* Código */ });
  5. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 15/04/2009, 14:47
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: DOM Firefox, IE, Chrome, etc...

No, ni caso... con Firefox si hago un alert me muestra undefined, y con los otros 2 nada...


Undefined para Firefox, por los otros nisiquiera muestran nada
Código javascript:
Ver original
  1. if (o.addEventListener) {
  2.     o.addEventListener('click', function() { alert(s[i]) }, false);
  3. } else {
  4.     o.attachEvent('onclick', function() { alert(s[i]) });
  5. }


Solo funciona Firefox...
Código javascript:
Ver original
  1. if (o.addEventListener) {
  2.     o.addEventListener('click', function() { alert("asdasd") }, false);
  3. } else {
  4.     o.attachEvent('onclick', function() { alert("asdasd") });
  5. }
  #6 (permalink)  
Antiguo 15/04/2009, 14:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: DOM Firefox, IE, Chrome, etc...

¿Podrías poner el código completo pero de la salida HTML que te genera? Me refiero a que ejecutes la página y vayas a tu navegador en "Ver Código Fuente" y copias ese código.

Es que es más complicado leer y probar código mezclado con PHP.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 15/04/2009, 14:58
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: DOM Firefox, IE, Chrome, etc...

Código javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
  4.     <head>
  5.         <title>Control de Administración</title>
  6.         <link href="./../style/css/stylesheet.css" rel="stylesheet" type="text/css" />
  7.         <script type="text/javascript">
  8.             window.onload = function()
  9.             {
  10.                 if(window.show_select){
  11.                     show_select();
  12.                 }
  13.                
  14.                 if(window.show_cat_quest){
  15.                     show_cat_quest();
  16.                 }
  17.             }
  18.  
  19.             function ajaxLoad()
  20.             {
  21.                 var ajax = null;
  22.  
  23.                 if(window.XMLHttpRequest)
  24.                 {
  25.                     ajax = new XMLHttpRequest();
  26.                 }
  27.                 else if(window.ActiveXObject)
  28.                 {
  29.                     ajax = new ActiveXObject("Microsoft.XMLHTTP");
  30.                 }
  31.                 else
  32.                 {
  33.                     ajax = false;
  34.                 }
  35.  
  36.                 return(ajax);
  37.             }
  38.         </script>
  39.     </head>
  40.     <body>
  41.  
  42.         <div id="container">
  43.             <div id="menu">
  44.                 <div class="menuBar">
  45.                     <a class="botonMenu" href="?see=main">Inicio</a>
  46.                     <a class="botonMenu" href="?see=2">Encuesta</a>
  47.                     <a class="botonMenu" href="?see=question">Preguntas</a>
  48.                     <a class="botonMenu" href="?see=category">Categorias</a>
  49.  
  50.                     <a class="botonMenu" href="?see=correction">Correción</a>
  51.                     <a class="botonMenu" href="?see=associate">Associación</a>
  52.                 </div>
  53.             </div>
  54.            
  55.             <div class="limpiar"></div>
  56.            
  57.                         <div class="box">
  58.                 <fieldset>
  59.                     <legend>Actualiza/Modifica la pregunta</legend>
  60.  
  61.                                             <script type="text/javascript">
  62.                             var n = new Array();
  63.                             var s = new Array();
  64.                             var ind = 0;
  65.                         </script>
  66.                                                     <script type="text/javascript">;               
  67.                                 n["TMqRWdXC"] = "Te'n surts bé amb la llengua, és a dir, tens facilitat per expressar-te, comprens bé el que llegeixes, saps redactar amb una ortografia acceptable, etc? ";
  68.                                 s[ind] = "TMqRWdXC";
  69.                                 ind++;
  70.                             </script>
  71.                                                     <script type="text/javascript">;               
  72.                                 n["1YzE0N2E1M"] = "Ets creatiu/iva, tens imaginació i inventiva per proposar idees originals, tens facilitat per improvisar solucions noves als problemes?";
  73.                                 s[ind] = "1YzE0N2E1M";
  74.                                 ind++;
  75.                             </script>
  76.                                                     <script type="text/javascript">;               
  77.                                 n["xUSGnn3kd"] = "Entens amb facilitat la mecànica d´un aparell, saps ràpidament com funciona, pots arreglar amb facilitat els que s'espatllen?";
  78.                                 s[ind] = "xUSGnn3kd";
  79.                                 ind++;
  80.                             </script>
  81.                                                     <script type="text/javascript">;               
  82.                                 n["ZWJiY2M1ZDRl"] = "Tens facilitat per alguna activitat artística? Per exemple: dibuix, pintura, escultura, dansa, teatre, fotografia, música, etc.";
  83.                                 s[ind] = "ZWJiY2M1ZDRl";
  84.                                 ind++;
  85.                             </script>
  86.                                                     <script type="text/javascript">;               
  87.                                 n["wZDIyYzQ1YWY"] = "Consideres que tens una bona capacitat de raonament? És a dir: analitzes ordenadament els problemes abans de resoldre'ls, saps construir arguments sòlids per fonamentar les teves afirmacions, ets reflectiu i crítiquen els teus plantejaments, etc?";
  88.                                 s[ind] = "wZDIyYzQ1YWY";
  89.                                 ind++;
  90.                             </script>
  91.  
  92.                                                     <script type="text/javascript">;               
  93.                                 n["MzQ0YjA0N2Yw"] = "Consideres que tens aptituds per ensenyar coses que saps als altres? És a dir: saps explicar les coses ordenadament, ets estructurat en les teves explicacions, ets clar en la teva expressió, saps transmetre l'interès per les coses que expliques?";
  94.                                 s[ind] = "MzQ0YjA0N2Yw";
  95.                                 ind++;
  96.                             </script>
  97.                                                     <script type="text/javascript">;               
  98.                                 n["UwZDIwNWQ4YTg"] = "Te'n surts bé en les relacions humanes? És a dir: saps comprendre les persones i intentes ajudar-les amb els problemes, no et costa prendre contacte amb la gent?";
  99.                                 s[ind] = "UwZDIwNWQ4YTg";
  100.                                 ind++;
  101.                             </script>
  102.                                                     <script type="text/javascript">;               
  103.                                 n["NDllMGQxZmM"] = "Tens facilitat per als números i el càlcul? Te'n surts bé amb les matemàtiques?";
  104.                                 s[ind] = "NDllMGQxZmM";
  105.                                 ind++;
  106.                             </script>
  107.                                                     <script type="text/javascript">;               
  108.                                 n["IyYjFjOTZk"] = "Creus que tens capacitat d'organització (saps com organitzar-te bé) ets net i polit en els teus treballs? Saps classificar, distribuir, arxivar i localitzar informacions i documents?";
  109.                                 s[ind] = "IyYjFjOTZk";
  110.                                 ind++;
  111.                             </script>
  112.                                                     <script type="text/javascript">;               
  113.                                 n["TU5MDY0YjM"] = "Saps intervenir en conflictes, discusions i enfrontaments amb capacitat de persuasió, i resoldre'ls?";
  114.                                 s[ind] = "TU5MDY0YjM";
  115.                                 ind++;
  116.                             </script>
  117.                                                     <script type="text/javascript">;               
  118.                                 n["ZTQ5NDZiMmEz"] = "Tens capacitat de concentració, és a dir, et saps aïllar de les influències de l'entorn i atendre a allò que estàs fent sense distraccions?";
  119.                                 s[ind] = "ZTQ5NDZiMmEz";
  120.                                 ind++;
  121.                             </script>
  122.  
  123.                                                     <script type="text/javascript">;               
  124.                                 n["YTA5ZWY3MjA"] = "Et trobes capacitat per suportar treballs de gran esforç fisic? Consideres que tens aptituds físiques?";
  125.                                 s[ind] = "YTA5ZWY3MjA";
  126.                                 ind++;
  127.                             </script>
  128.                                                     <script type="text/javascript">;               
  129.                                 n["mE3NmIyNmM0M"] = "Saps calcular amb facilitat els volums i les distancies? Per exemple, et surt bé mesurar una superficie o un volum, calcules amb facilitat les distancies, no confons la dreta amb l'esquerra, saps girar un objecte perque encaixi en un forat, etc? ";
  130.                                 s[ind] = "mE3NmIyNmM0M";
  131.                                 ind++;
  132.                             </script>
  133.                                                     <script type="text/javascript">;               
  134.                                 n["ZWE0MTBmZTkw"] = "Consideres que tens aptituds manuals? Saps fer coses amb les teves mans, com per exemple: arreglar objectes, aprendre rapidament el funcionament d'aparells, etc?";
  135.                                 s[ind] = "ZWE0MTBmZTkw";
  136.                                 ind++;
  137.                             </script>
  138.                                                 <script type="text/javascript"><!--//--><![CDATA[//><!--
  139.                         function show_select()
  140.                         {
  141.                             var i = 0;
  142.                             var se = document.getElementById("select");
  143.                             for(i = 0; i < s.length; i++)
  144.                             {
  145.                                 var o = document.createElement("option");
  146.                                 var t = document.createTextNode(n[s[i]].substr(0,50)+"...");
  147.                                        
  148.                                 //o.setAttribute("onclick","(show_preg('"+s[i]+"'));");
  149.                                 //show_preg(s[i])
  150.                                 if (o.addEventListener)
  151.                                 {
  152.                                     o.addEventListener('click', function() { show_preg(s[i]) }, false);
  153.                                 }
  154.                                 else
  155.                                 {
  156.                                     o.attachEvent('onclick', function() { show_preg(s[i]) });
  157.                                 }
  158.                                
  159.                                 o.appendChild(t);
  160.                                 se.appendChild(o);
  161.                             }
  162.                             show_preg(s[0]);
  163.                         }
  164.                        
  165.                         function show_preg(id)
  166.                         {
  167.                             document.getElementById("preg_name").value = n[id];
  168.                             document.getElementById("preg_s").value = id;
  169.                         }              
  170.                         //--><!]]></script>
  171.                            
  172.                         <form action="./../functions/ctrlmysql.php" method="get" onsubmit="return(true);">
  173.                             <select id="select"><!--<option></option>--></select><br />
  174.                             <textarea id="preg_name" name="new_question" rows="5" cols="50"></textarea>
  175.  
  176.                             <input type="hidden" name="preg_s" id="preg_s" value=""/><br />
  177.                             <input type="hidden" name="table" value="preguntes" />
  178.                             <input type="hidden" name="uri" value="/enquesta/admcp/?see=question" />
  179.                             <input type="submit" name="do" value="Actualizar"/>
  180.                             <input type="submit" name="do" value="Borrar"/>
  181.                         </form>
  182.                                         </fieldset>
  183.             </div>
  184.            
  185.             <div class="box">
  186.  
  187.                 <fieldset>
  188.                     <legend>Nueva pergunta</legend>
  189.                     <form action="./../functions/ctrlmysql.php" method="get" onsubmit="return(true);">
  190.                         <input type="text" id="new_quiestion" name="new_question" size="50" /><br />
  191.                         <input type="hidden" name="uri" value="/enquesta/admcp/?see=question" />
  192.                         <input type="hidden" name="table" value="preguntes" />
  193.                         <input type="submit" name="do" value="Insertar"/>
  194.                     </form>
  195.                 </fieldset>
  196.  
  197.             </div>
  198.            
  199.             <div class="limpiar"></div>     </div>
  200.     </body>
  201. </html>
  #8 (permalink)  
Antiguo 15/04/2009, 15:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: DOM Firefox, IE, Chrome, etc...

El evento onclick no se produce en los option en la mayoría de los navegadores.

Debes usar el evento onchange del select y a partir de allí definir las acciones a realizar.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 15/04/2009, 15:52
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: DOM Firefox, IE, Chrome, etc...

ok... ya lo tengo mas o menos... ahora solo hace falta pulirlo y ya esta... Muchas gracias por la ayuda...

SALUDOS!!!!

Código javascript:
Ver original
  1. function show_select()
  2.                         {
  3.                             var i = 0;
  4.                             var se = document.getElementById("select");
  5.                             for(i = 0; i < s.length; i++)
  6.                             {
  7.                                 var o = document.createElement("option");
  8.                                 var t = document.createTextNode(n[s[i]].substr(0,50)+"...");
  9.                                        
  10.                                 //o.setAttribute("onclick","(show_preg('"+s[i]+"'));");
  11.                                 o.setAttribute("value",s[i]);
  12.                                
  13.                                 o.appendChild(t);
  14.                                 se.appendChild(o);
  15.                             }
  16.                             //show_preg(s[0]);
  17.                         }
  18.                        
  19.                         function find_id()
  20.                         {
  21.                             var sel = document.getElementById("select");
  22.                             var opt = sel.getElementsByTagName("option");
  23.                             var i = 0;
  24.                            
  25.                             for(i = 0; i < opt.length; i++)
  26.                             {
  27.                                 if(opt[i].selected)
  28.                                 {
  29.                                     return(opt[i].value);
  30.                                 }  
  31.                             }
  32.                         }
  33.                        
  34.                         function show_preg()
  35.                         {
  36.                             var id = find_id();
  37.                             document.getElementById("preg_name").value = n[id];
  38.                             document.getElementById("preg_s").value = id;
  39.                         }      
  40.  
  41. //<select id="select" onchange="show_preg()"><!--<option></option>--></select>
  #10 (permalink)  
Antiguo 15/04/2009, 16:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: DOM Firefox, IE, Chrome, etc...

Como sugerencia, no necesitas recorrer las opciones para ver cuál está seleccionada. Sólo necesitas usar objeto_select.value (en el caso se puede usar this que apunta al select):
Código javascript:
Ver original
  1. function show_preg(id) {
  2.     /* Código */
  3. }
Y al llamarlo en el onchange:
Código javascript:
Ver original
  1. show_preg(this.value);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 16/04/2009, 02:08
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: DOM Firefox, IE, Chrome, etc...

No sabia que el <select> tiene el mismo valor que la opcion elegida... algo nuevo que se... Una cosa mas, si el select tiene el mismo valor que la option... con el metodo post o get (php), puede recoger este valor, no se si me explicado muy bien...

Código html:
Ver original
  1. <form action="" method="post">
  2. <select id="select" name="select"><option value="zzz">yyy</option></select>
  3. <input type="submit" value="yyy">
  4. </form>

Código php:
Ver original
  1. echo $_POST["select"]; //deberia mostrar zzz, creo...

Gracias por la ayuda...
  #12 (permalink)  
Antiguo 16/04/2009, 04:19
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 19 años, 10 meses
Puntos: 4
Respuesta: DOM Firefox, IE, Chrome, etc...

Estoy creando un input mediante DOM que debe reemplazar al siguiente:
Código javascript:
Ver original
  1. <input id="pass" type="text" name="pass" class="tg" value="tu contraseña" size="10" onfocus="checkevent(event)" onblur="checkevent(event)" />

Código javascript:
Ver original
  1. var nuevotextbox = document.createElement("input");
  2.                         nuevotextbox.value = "";
  3.                                                 nuevotextbox.className = "tg2";
  4.                         nuevotextbox.type = "password";
  5.                         nuevotextbox.name = "pass";
  6.                         nuevotextbox.id = "pass";

Pero no se como añadir a sus atributos el onfocus="checkevent(event)" etc... he probado con:
nuevotextbox.onfocus = function() { checkevent(event) };
también con:
nuevotextbox.addEventListener('onfocus', function() { checkevent(event) }, false );
Y no funciona, no se que estoy haciendo mal, he pensado intentarlo con setAttributeNode pero no estoy seguro de si es correcto.
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #13 (permalink)  
Antiguo 16/04/2009, 04:44
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: DOM Firefox, IE, Chrome, etc...

Si no me equivoco es focus en addEventListener

Código javascript:
Ver original
  1. nuevotextbox.addEventListener('focus', function() { checkevent(event) }, false );
  #14 (permalink)  
Antiguo 16/04/2009, 04:59
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 19 años, 10 meses
Puntos: 4
Respuesta: DOM Firefox, IE, Chrome, etc...

Cita:
Iniciado por machoman112233 Ver Mensaje
Si no me equivoco es focus en addEventListener

Código javascript:
Ver original
  1. nuevotextbox.addEventListener('focus', function() { checkevent(event) }, false );
Así tampoco funciona :S.

Con nuevotextbox.setAttribute("onfocus", "checkevent(event)"); funciona en todos menos en IE, ¿alguna idea de por qué y como solucionarlo?
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."

Última edición por Dude--; 16/04/2009 a las 05:04
  #15 (permalink)  
Antiguo 16/04/2009, 08:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: DOM Firefox, IE, Chrome, etc...

Así debería funcionar:
Código javascript:
Ver original
  1. if (nuevotextbox.addEventListener) {
  2.     nuevotextbox.addEventListener('focus', function(evt) { checkevent(evt) }, false);
  3. } else {
  4.     nuevotextbox.attachEvent('onfocus', function(evt) { checkevent(evt) });
  5. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 16/04/2009, 11:29
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 19 años, 10 meses
Puntos: 4
Respuesta: DOM Firefox, IE, Chrome, etc...

Pues a mi no me funciona, te adjunto el código:

Código javascript:
Ver original
  1. <script type="text/javascript">
  2.             function checkevent(e)
  3.             {
  4.                 var obj=e.srcElement || e.target;
  5.                 var objeto = document.getElementById(obj.name);
  6.                 var evento = e.type;
  7.                
  8.                 if ( obj.name == "email" )
  9.                 {
  10.                     if(evento == "focus" && objeto.value == "tu email")
  11.                     { objeto.value = ""; }
  12.                     if(evento == "blur" && objeto.value == "" )
  13.                     { objeto.value = "tu email"; }
  14.                 }
  15.                
  16.                 if ( obj.name == "pass" )
  17.                 {
  18.                     var formulario = document.getElementById("identificacion");
  19.                     if(evento == "focus" && objeto.value == "tu contraseña")
  20.                     {
  21.                         var nuevotextbox = document.createElement("input");
  22.                         nuevotextbox.setAttribute("id", "pass");
  23.                         nuevotextbox.setAttribute("name", "pass");
  24.                         nuevotextbox.setAttribute("type", "password");
  25.                         nuevotextbox.setAttribute("value", "");
  26.                        
  27.                         if (nuevotextbox.addEventListener)
  28.                         {nuevotextbox.addEventListener('focus', function(event) { checkevent(event) }, false);}
  29.                         else
  30.                         {nuevotextbox.attachEvent('onfocus', function(event) { checkevent(event) });}
  31.                        
  32.                         formulario.replaceChild(nuevotextbox, objeto);
  33.                         setTimeout(function(){ nuevotextbox.focus()}, 100);
  34.                     }
  35.                     if(evento == "blur" && objeto.value == "")
  36.                     {
  37.                         var nuevotextbox = document.createElement("input");
  38.                         nuevotextbox.setAttribute("id", "pass");
  39.                         nuevotextbox.setAttribute("name", "pass");
  40.                         nuevotextbox.setAttribute("type", "text");
  41.                         nuevotextbox.setAttribute("value", "tu contraseña");
  42.                        
  43.                         if (nuevotextbox.addEventListener)
  44.                         {nuevotextbox.addEventListener('blur', function(event) { checkevent(event) }, false);}
  45.                         else
  46.                         {nuevotextbox.attachEvent('onblur', function(event) { checkevent(event) });}
  47.                        
  48.                         formulario.replaceChild(nuevotextbox, objeto);
  49.                     }
  50.                 }
  51.        
  52.             }
  53.         </script>
Código html:
Ver original
  1. <form id="identificacion" action="index.php" method="post" enctype="application/x-www-form-urlencoded">
  2.     <input id="email" type="text" name="email" title="Email de usuario" value="tu email" size="20" onfocus="checkevent(event)" onblur="checkevent(event)" />
  3.     <input id="pass" type="text" name="pass" value="tu contraseña" size="10" onfocus="checkevent(event)" onblur="checkevent(event)" />
  4.     <label><input  type="checkbox" name="autologin" />Guardar</label>
  5.     <input type="submit" value="Ok" />
  6. </form>
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."

Última edición por Dude--; 16/04/2009 a las 11:39
  #17 (permalink)  
Antiguo 16/04/2009, 11:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: DOM Firefox, IE, Chrome, etc...

Cambia esto:
Código javascript:
Ver original
  1. formulario.replaceChild(nuevotextbox, objeto);
Por:
Código javascript:
Ver original
  1. objeto.parentNode.replaceChild(nuevotextbox, objeto);

Sin contar que para lograr el efecto que deseas donde asignas blur deberías asignar focus y donde asignas focus deberías asignar blur.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Última edición por David; 16/04/2009 a las 12:05
  #18 (permalink)  
Antiguo 16/04/2009, 22:04
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 19 años, 10 meses
Puntos: 4
Respuesta: DOM Firefox, IE, Chrome, etc...

Vale ahora si funciona ¿podrías explicarme el porque de cambiar:
Código javascript:
Ver original
  1. formulario.replaceChild(nuevotextbox, objeto);
por:
Código javascript:
Ver original
  1. objeto.parentNode.replaceChild(nuevotextbox, objeto);
? gracias.
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #19 (permalink)  
Antiguo 16/04/2009, 22:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: DOM Firefox, IE, Chrome, etc...

Es que por alguna razón extraña Internet Explorer considera como nodo padre al body y no al form.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #20 (permalink)  
Antiguo 17/04/2009, 08:06
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 19 años, 10 meses
Puntos: 4
Respuesta: DOM Firefox, IE, Chrome, etc...

Cita:
Iniciado por David el Grande Ver Mensaje
Es que por alguna razón extraña Internet Explorer considera como nodo padre al body y no al form.
¿Qué versión de IE? lo digo porque con el 7 funciona si uso:
Código javascript:
Ver original
  1. formulario.replaceChild(nuevotextbox, objeto);

Si antes no iba era porque tenía los eventos invertidos como tu bien indicaste.
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
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 01:26.