Un programa mezcla de Javascript con html funciona en el explorer pero no en Netscape

Tengo un programa de un Arbol, mezcla Javascript con Html y funciona el Explorer pero NO lo hace en Netscape, desearia saber cuales son las ordenes equivalentes y validas para abrir y cerrar las ramas del arbol, pq me parece que el DIV o el EVAL no estan funcionando correctamente en Netscape, te adjunto el HTML resultante (es que se genera desde un XSL), también estamos teniendo problemas desde el Explorer;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML><HEAD><SCRIPT>
function SetNode(nodeName) {
if (eval("Node" + nodeName + ".Loaded == 'true';")) {
if (eval("Items" + nodeName + ".style.display == 'none';"))
{
// Open
eval("Image" + nodeName + ".src = 'C:/images/minus.gif'");
eval("NodeImage" + nodeName + ".src = 'C:/images/open.gif'");
eval("Items" + nodeName + ".style.display = 'block'");
}
else
{
// Close
eval("Image" + nodeName + ".src = 'C:/images/plus.gif'");
eval("NodeImage" + nodeName + ".src = 'C:/images/closed.gif'");
eval("Items" + nodeName + ".style.display = 'none'");
}
}
}
//</SCRIPT></HEAD><BODY><DIV id="Node1" loaded="true" name="wapsites"
class="LevelHeader"><IMG id="Image1" src="C:/images/plus.gif"
onclick="SetNode('1');"><IMG id="NodeImage1" src="C:/images/closed.gif"
ondblclick="SetNode('1');"><A href="URLwapsites">wapsites</A></DIV><DIV
id="Items1" style="display: block; Margin-left: 16;"
class="LevelItems"><DIV class="Item"><IMG src="C:/images/blank.gif"><IMG
src="C:/images/document.gif"><DIV id="Node1_1" loaded="true"
name="website_name" class="LevelHeader"><IMG id="Image1_1"
src="C:/images/plus.gif" onclick="SetNode('1_1');"><IMG
id="NodeImage1_1" src="C:/images/closed.gif"
ondblclick="SetNode('1_1');"><A
href="URLwebsite_name">website_name</A></DIV>
</BODY></HTML>
<!-- This page was served in 4992 milliseconds by Cocoon 1.7.3 -->
Gracias adelantadas por tu ayuda.

1 Respuesta

Respuesta
1
En Netscape (asumo que hablas de las versiones 4.x) es necesario marcar explícitamente el DIV de cada nodo como una capa para que puedas recuperar sus características. Para eso, en principio basta con añadir style="position:relative" a la definición del DIV.
Además, tendrás que hacer referencia explícita a document para usar métodos o propiedades. Es decir: no basta con 'Nodo1. Id', tienes que hacer 'document. Nodo1. Id'. Por cierto, no parece que haya ningún problema con los eval().
Por otro lado, los atributos extra que coloques en el HTML a cualquier tag no tendrán reflejo alguno en el DOM de Netscape: esto es así porque el parser de HTML elimina cualquier referencia de tags o atributos no existentes en el estándar antes de que la estructura se refleje en el DOM. Si quieres añadir propiedades a un objeto del DOM reflejado desde HTML (como el DIV del que hablamos), tendrás que hacerlo directamente desde Javascript, simplemente asignando la propiedad nueva del objeto a algún valor: document.Nodo1.loaded=true;
No dejo de recomendarte que mires la documentación de DOM1 W3C (http://www.zvon.org/xxl/DOM1reference/Output/index.html; el resto del sitio te interesará si desarrollas en XML/XSL), implementado de forma completa tanto por Explorer 5 como por Netscape 6. Si tu aplicación es muy avanzada (y sus condicionantes de entorno lo permiten), tal vez incurras en costes menores si trasladas el soporte principal a estos dos navegadores y trabajas respecto del DOM estándar. En cualquier caso, Netscape 4.x y su DOM propietario es una carga difícil de soportar...
Espero haberte servido de ayuda. No dudes en hacerme cualquier otra pregunta que te surja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas