Foros del Web » Programando para Internet » Javascript »

Validación código html con javascript

Estas en el tema de Validación código html con javascript en el foro de Javascript en Foros del Web. Tengo el siguiente código javascript Código HTML: <script language= "javascript" type= "text/javascript" > <!-- var dom = (document.getElementById) ? true : false; var ns5 = ...
  #1 (permalink)  
Antiguo 09/06/2006, 15:22
Avatar de Fociños  
Fecha de Ingreso: marzo-2004
Ubicación: A Coruña
Mensajes: 587
Antigüedad: 20 años, 1 mes
Puntos: 0
Validación código html con javascript

Tengo el siguiente código javascript

Código HTML:
<script language="javascript" type="text/javascript">
<!--
var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;

var origWidth, origHeight;
if (ns4) {
	origWidth = window.innerWidth; origHeight = window.innerHeight;
	window.onresize = function() { if (window.innerWidth != origWidth || window.innerHeight != origHeight) history.go(0); }
}

if (nodyn) { event = "nope" }
var tipFollowMouse	= true;	
var tipWidth		= 156;
var offX		 	= 16;	// how far from mouse to show tip
var offY		 	= 16; 
var tipFontFamily 	= "Arial, Helvetica, sans-serif";
var tipFontSize		= "10pt";
var tipFontColor	= "#000000";
var tipBgColor		= "#DDECFF"; 
var origBgColor 	= "#FFFFFF";
var tipBorderColor 	= "#000066";
var tipBorderWidth 	= 1;
var tipBorderStyle 	= "ridge";
var tipPadding	 	= 4;
var curBgColor      = "#FFFFFF";
var curFontColor    = "#000000";

var messages = new Array();
<?php
  $i = -1;
  $resultado1 = mysql_query($consulta1);
  while ($cursor1 = mysql_fetch_array($resultado1))
  {
    $i++;
    echo "messages[" . $i . "] = new Array('multimedia/oportunidades/" . $cursor1["foto_portada"] . "');";
  }
?>

if (document.images) {
	var theImgs = new Array();
	for (var i=0; i<messages.length; i++) {
  	theImgs[i] = new Image();
		theImgs[i].src = messages[i];
  }
}


var tooltip, tipcss;
function initTip() {
	if (nodyn) return;
	tooltip = (ns4)? document.tipDiv.document: (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
	tipcss = (ns4)? document.tipDiv: tooltip.style;
	if (ie4||ie5||ns5) {	// ns4 would lose all this on rewrites
		tipcss.width = tipWidth+"px";
		tipcss.fontFamily = tipFontFamily;
		tipcss.fontSize = tipFontSize;
		tipcss.color = tipFontColor;
		tipcss.backgroundColor = tipBgColor;
		tipcss.borderColor = tipBorderColor;
		tipcss.borderWidth = tipBorderWidth+"px";
		tipcss.padding = tipPadding+"px";
		tipcss.borderStyle = tipBorderStyle;
	}
	if (tooltip&&tipFollowMouse) {
		if (ns4) document.captureEvents(Event.MOUSEMOVE);
		document.onmousemove = trackMouse;
	}
}

window.onload = initTip;

var t1,t2;	// for setTimeouts
var tipOn = false;	// check if over tooltip link
function doTooltip(evt,num) {

	if (!tooltip) return;
	if (t1) clearTimeout(t1);	if (t2) clearTimeout(t2);
	tipOn = true;
	// set colors if included in messages array
	if (ns4) {
		var tip = '<table bgcolor="' + tipBorderColor + '" width="' + tipWidth + '" cellspacing="0" cellpadding="' + tipBorderWidth + '" border="0"><tr><td><table bgcolor="' + curBgColor + '" width="100%" cellspacing="0" cellpadding="' + tipPadding + '" border="0"><tr><td>'+ '<table width="' + tipWidth + '"><tr><td align="center" width="100%"><img src="' + messages[num] + '" border="0"></td></tr></table></td></tr></table></td></tr></table>';
		tooltip.write(tip);
		tooltip.close();
	} else if (ie4||ie5||ns5) {
		var tip = '<table width="' + tipWidth + '"><tr><td align="center" width="100%"><img src="' + messages[num] + '" border="0"></td></tr></table>';
		tipcss.backgroundColor = curBgColor;
	 	tooltip.innerHTML = tip;
	}
	if (!tipFollowMouse) positionTip(evt);
	else t1=setTimeout("tipcss.visibility='visible'",100);
}

var mouseX, mouseY;
function trackMouse(evt) {
	mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
	mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
	if (tipOn) positionTip(evt);
}

function positionTip(evt) {
	if (!tipFollowMouse) {
		mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
		mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
	}
	// tooltip width and height
	var tpWd = (ns4)? tooltip.width: (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
	var tpHt = (ns4)? tooltip.height: (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
	// document area in view (subtract scrollbar width for ns)
	var winWd = (ns4||ns5)? window.innerWidth-20+window.pageXOffset: document.body.clientWidth+document.body.scrollLeft;
	var winHt = (ns4||ns5)? window.innerHeight-20+window.pageYOffset: document.body.clientHeight+document.body.scrollTop;
	// check mouse position against tip and window dimensions
	// and position the tooltip 
	if ((mouseX+offX+tpWd)>winWd) 
		tipcss.left = (ns4)? mouseX-(tpWd+offX): mouseX-(tpWd+offX)+"px";
	else tipcss.left = (ns4)? mouseX+offX: mouseX+offX+"px";
	if ((mouseY+offY+tpHt)>winHt) 
		tipcss.top = (ns4)? winHt-(tpHt+offY): winHt-(tpHt+offY)+"px";
	else tipcss.top = (ns4)? mouseY+offY: mouseY+offY+"px";
	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
}

function hideTip() {
	if (!tooltip) return;
	t2=setTimeout("tipcss.visibility='hidden'",100);
	tipOn = false;
}
//-->
</script> 

La parte del código javascript siguiente es la que el validador del w3c me rechaza, qué puedo hacer?


Código HTML:
	if (ns4) {
		var tip = '<table bgcolor="' + tipBorderColor + '" width="' + tipWidth + '" cellspacing="0" cellpadding="' + tipBorderWidth + '" border="0"><tr><td><table bgcolor="' + curBgColor + '" width="100%" cellspacing="0" cellpadding="' + tipPadding + '" border="0"><tr><td>'+ '<table width="' + tipWidth + '"><tr><td align="center" width="100%"><img src="' + messages[num] + '" border="0"></td></tr></table></td></tr></table></td></tr></table>';
		tooltip.write(tip);
		tooltip.close();
	} else if (ie4||ie5||ns5) {
		var tip = '<table width="' + tipWidth + '"><tr><td align="center" width="100%"><img src="' + messages[num] + '" border="0"></td></tr></table>';
		tipcss.backgroundColor = curBgColor;
	 	tooltip.innerHTML = tip;
	}

Gracias
  #2 (permalink)  
Antiguo 10/06/2006, 01:27
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
¿Qué mensaje te da el validador al respecto?
  #3 (permalink)  
Antiguo 10/06/2006, 04:13
Avatar de Fociños  
Fecha de Ingreso: marzo-2004
Ubicación: A Coruña
Mensajes: 587
Antigüedad: 20 años, 1 mes
Puntos: 0
El primero que me muestra es

Código:
 Below are the results of attempting to parse this document with an SGML parser.

   1. Error Line 197 column 387: end tag for element "TD" which is not open.

      ... + messages[num] + '" border="0"></td></tr></table></td></tr></table></td></t

      The Validator found an end tag for the above element, but that element is not currently open. This is often caused by a leftover end tag from an element that was removed during editing, or by an implicitly closed element (if you have an error related to an element being used where it is not allowed, this is almost certainly the case). In the latter case this error will disappear as soon as you fix the original problem.

      If this error occured in a script section of your document, you should probably read this FAQ entry.
  #4 (permalink)  
Antiguo 10/06/2006, 04:23
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Tal vez esté contemplando ese código como html cuando no debiera hacerlo
¿Has probado a poner el script en un archivo .js externo? pruébalo y mira qué dice el validador.
  #5 (permalink)  
Antiguo 10/06/2006, 11:28
Avatar de Fociños  
Fecha de Ingreso: marzo-2004
Ubicación: A Coruña
Mensajes: 587
Antigüedad: 20 años, 1 mes
Puntos: 0
No puedo poner el script como externo, ya que en ese script se definen unas variables con PHP.
  #6 (permalink)  
Antiguo 10/06/2006, 13:18
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Claro que puedes, crea un archivo de nombre codigo.php y pone este header

Código PHP:
<?php header(Content-typetext/javascript); ?>
Luego pones el código javascript con el php que necesites

Código PHP:
var pepe = '<?php echo $variable ?>';
Y lo incluyes normalmente como javascript

<script type="text/javascript" src="codigo.php"></script>
  #7 (permalink)  
Antiguo 10/06/2006, 14:12
Avatar de Fociños  
Fecha de Ingreso: marzo-2004
Ubicación: A Coruña
Mensajes: 587
Antigüedad: 20 años, 1 mes
Puntos: 0
el codigo.php lo pongo todo seguido?



Código HTML:
<?php header('Content-type: text/javascript); ?> 
var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;
He probado así y me da error, dos variables no se definen.

Última edición por Fociños; 11/06/2006 a las 03:24
  #8 (permalink)  
Antiguo 11/06/2006, 03:37
Avatar de Fociños  
Fecha de Ingreso: marzo-2004
Ubicación: A Coruña
Mensajes: 587
Antigüedad: 20 años, 1 mes
Puntos: 0
Muchas gracias Tunait, el problema estaba en que en el código javacript había una consulta que no se realizar correctamente.
  #9 (permalink)  
Antiguo 11/06/2006, 05:51
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Bueno, me alegra que finalmente localizaras el error

Un saludo
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 13:51.