Archive for the ‘Navegadores’ category

innerHTML de un TR es distinto dependiendo de a quien le preguntes

Enero 14th, 2010

Quizas la peor pesadilla de un programador Web es hacer que el Javascript corra exactamente igual en todos los navegadores, eso porque cada navegador tienes su forma particular de interpretar ciertos scripts.

El Caso:¿Cual es el contenido de un TR?

Si tenemos una tabla como esta:

    <table id="DataContainer">
    <tr class="loadVoyageHandler">
    <input id="elid" name="elnombre" type="hidden" value="25" />
        <td>
        CONTENIDO
        </td>
        <td>
        CONTENIDO
        </td>
        <td>
        CONTENIDO
        </td>
    </tr>
</table>

Y con jQuery le preguntamos el contenido de ese TR:

alert($("tr.loadVoyageHandler").html());

La respuesta depende del navegador que utilice el usuario:
IE 8, FF3 y Opera 9 te responden:

     <input id="elid" name="elnombre" type="hidden" value="25" />
        <td>
        CONTENIDO
        </td>
        <td>
        CONTENIDO
        </td>
        <td>
        CONTENIDO
        </td>



Pero si le preguntamos a Chrome o Safari te responden:

<!--AQUI FALTA ALGO??-->
        <td>
        CONTENIDO
        </td>
        <td>
        CONTENIDO
        </td>
        <td>
        CONTENIDO
        </td>

¿Y donde quedo el campo oculto que estaba antes del primer TD?

Aparentemente para Chrome y Safari, nada que no este dentro de un TD es contenido de un TR.

Este es un caso muy especifico de los hiddens inputs. Lo mas probable es que el hidden sea puesto por fuera de la tabla, como sucede con una caja de texto si tratas de colocar dentro de una tabla pero por fuera de cualquier TD

Entradas Relacionadas: