Newsgroup: it.lavoro.professioni.webmaster
Titolo: </script> e </head> da togliere...

Salve a tutti,
stavo validando una mia pagina (
http://www.etichettando.com/home.htm
 ) ma mi
dice che i tag in oggetti devo toglierli perché non sono stati aperti. Ma è
pazzo? Sono stati aperti e come...
Mi date un aiuto pls?
Grazie,
Daniele

 ha scritto nel messaggio
news:nri%8.107512$Jj7.2...@news1.tin.it...
Ecco tutto il codice:
<head>
<title>Etichettando</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META NAME="TITLE" CONTENT="Etichetta">
<META NAME="DESCRIPTION" CONTENT="Monografia
        virtuale sulle etichette di frutta. Aspetti collezionistici. Studio
iconografico
        di un'etichetta. Ideazione e realizzazione grafica di etichette e
siti
        aziendali.">
<META NAME="KEYWORDS" CONTENT="etichette, collezione, collezione etichette,
etichete, labels, grafica etichette, grafica, graphics, collection,
collectors, collezionisti, web design, design, collecting, offro, scambio,
scambi, doppioni, duplicates, hobby, free, website, siti web, realizzazione
siti web, realizzazione pagine web, web pages, realizzazione siti internet,
internet design, creazione siti web, creazione pagine web, servizi internet,
progettazione siti, progettazione pagine web, clip art, background, buttons,
clip, animation, gif, free clip art, gif animate, animated gif, gifs,
animated gifs, download,   ricetta, cucina, gastronomia, dolci, recipes,
food, recipe, dessert, dolci frutta, gastronomia, ricette pubblicitarie
gratis, free advertising pages, advertising pages, yellow pages, advertising
yellow pages, ricetta, cucina, gastronomia, dolci, recipes, food, recipe,
dessert, dolci frutta, gastronomia, ricette">
<META HTTP-EQUIV="expires" CONTENT="0">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<link rel="stylesheet" href="bottom.css" type="text/css">
<style type="text/css">
.menulines{
border:2.5px solid #E7BA05;
; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px}
.menulines a{
text-decoration:none;
color:black;
}
</style>
<STYLE type=text/css>A:link {
 TEXT-DECORATION: none
}
A:visited {
 TEXT-DECORATION: none
}
A:hover {
 BACKGROUND: #E7BA05; COLOR: #000000; TEXT-DECORATION: none
}
</STYLE>
<script language="JavaScript" type="text/javascript">
<!--
<!-- Start
<!--  prelevato su 
http://web-link.it
var bookmarkurl="
http://web-link.it
"
var bookmarktitle="WebLink tutto per la tua pagina web"
function addbookmark(){
if (document.all)
window.external.AddFavorite(bookmarkurl,bookmarktitle)
}
//  End -->
//-->
</script>
<style type="text/css">
<!--
BODY {margin: -10px 0 0 -10px}
  HTML BODY { margin: 0; padding: 0; border-width: 0; }
-->
</style>
<style type="text/css">
<!--
body {
scrollbar-3dlight-color: #CE9D2D;
scrollbar-arrow-color: #B66F03;
scrollbar-base-color: #E7BA05;
scrollbar-darkshadow-color: #660000;
scrollbar-face-color: #E7BA05;
scrollbar-highlight-color: white;
scrollbar-shadow-color: #666666;
scrollbar-track-color: #FEEBAB;
}
-->
</style>
<script language="JavaScript1.2" type="text/javascript">
//3-state Highlight menu effect script: By Dynamicdrive.com
//For full source, Terms of service, and 100s DTHML scripts
//Visit 
http://www.dynamicdrive.com
function over_effect(e,state){
if (document.all)
source4=event.srcElement
else if (document.getElementById)
source4=e.target
if (source4.className=="menulines")
source4.style.borderStyle=state
else{
while(source4.tagName!="TABLE"){
source4=document.getElementById? source4.parentNode : source4.parentElement
if (source4.className=="menulines")
source4.style.borderStyle=state
}
}
}
</script>
<script language="javascript" type="text/javascript"
src="chromeless.js"></script>
<script language="javascript" type=text/javascript>
function openIT(u,W,H,X,Y,n,b,x,m,r) {
 var cU  ='chrom/close.gif'
 var cO  ='chrom/close.gif'
 var cL  ='chrom/clock.gif'
 var mU  ='chrom/minimize.gif'
 var mO  ='chrom/minimize.gif'
 var xU  ='chrom/max.gif'
 var xO  ='chrom/max.gif'
 var rU  ='chrom/restore.gif'
 var rO  ='chrom/restore.gif'
 var tH  =''
 var tW  =''
 var wB  ='#63A923'
 var wBs ='#63A923'
 var wBG ='#63A923'
 var wBGs='#63A923'
 var wNS
='toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizab
le=1'
 var fSO ='scrolling=auto noresize'
 var brd =b||5;
 var max =x||false;
 var min =m||false;
 var res =r||false;
 var tsz =20;
 return
chromeless(u,n,W,H,X,Y,cU,cO,cL,mU,mO,xU,xO,rU,rO,tH,tW,wB,wBs,wBG,wBGs,wNS,
fSO,brd,max,min,res,tsz)
}
</script>
</head>

 pazzo?
No e' "sanissimo", e' il tuo codice che e' sbagliato. 
Dai una occhiata qui (questa e' la causa piu' comune dell'errore che ti
segnala il validatore):
http://www.w3.org/TR/html4/appendix/notes.html#h-B.3.2

 <STYLE type=text/css>
Anzi no, la soluzione al tuo problema e' qui:
http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.2

 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Title va dopo i Meta
Prova cosě
ciao

 Title va dopo i Meta
Una DTD non puo' specificare l'ordine di piu' elementi (TITLE, META)
all'interno di un altro (HEAD), quindi il convalidatore non puo'
segnalare questo come errore.
(Pero' si', il meta "content-type" e' piu' logico metterlo prima degli
elementi che contengono testo, ma questo vale solo per quel meta)

Questo script genera un calendario "dinamico" ma tutti i tag di chiusura il
validator w3c li considera errori, mi dice che chiudo dei tag che non ho
aperto, perchč??
es.
document.write("</font></b></a>");
document.writeln("</tt></TD></TR>");
Error: end tag for element "TT" which is not open; try removing the end tag
or check for improper nesting of elements
e cosi via per tutti i tag chiusi
<script language="JavaScript" type="text/javascript">
<!-- Begin
todaysDate = new Date()
todaysYear = todaysDate.getYear()
if (todaysYear < 1900) {todaysYear = todaysYear + 1900}
todaysMonth = todaysDate.getMonth() + 1
todaysDay = todaysDate.getDate()
//////////////////////////////////////////////////////////////////////////
// update calendar here
//////////////////////////////////////////////////////////////////////////
thisFilesName = "index.htm"
calLinks = new Array(
  new Array(todaysMonth, todaysDay, todaysYear, "index.htm", "Esempio di
evento")
);
//////////////////////////////////////////////////////////////////////////
var currentMonth = getCookie("currentMonth", todaysMonth);
var currentYear = getCookie("currentYear", todaysYear);
function getCalendarLink(month, day, year)
{
  var i = 0;
  for (i = 0; calLinks[i] != null; i++)
  {
    if (calLinks[i][0] == month && calLinks[i][1] == day && calLinks[i][2]
== year)
    {
      return i;
    }
  }
  return -1;
}
monthnames = new Array(
  "",
  "Gennaio",
  "Febbraio",
  "Marzo",
  "Apriel",
  "Maggio",
  "Giugno",
  "Luglio",
  "Agosto",
  "Settembre",
  "Ottobre",
  "Novembre",
  "Dicembre"
);
function prevMonth()
{
  currentMonth--;
  if (currentMonth == 0)
  {
    currentMonth = 12;
    currentYear--;
  }
  setCookie("currentMonth", currentMonth, null);
  setCookie("currentYear", currentYear, null);
}
function nextMonth()
{
  currentMonth++;
  if (currentMonth == 13)
  {
    currentMonth = 1;
    currentYear++;
  }
  setCookie("currentMonth", currentMonth, null);
  setCookie("currentYear", currentYear, null);
}
function thisMonth()
{
  setCookie("currentMonth", todaysMonth, null);
  setCookie("currentYear", todaysYear, null);
}
// Sets cookie values. Expiration date is optional
function setCookie(name, value, expire)
{
  document.cookie = name + "=" + escape(value)
    + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()));
}
function getCookie(Name, defaultVal)
{
  var search = Name + "=";
  if (document.cookie.length > 0)
  {
    // if there are any cookies
    offset = document.cookie.indexOf(search);
    if (offset != -1)
    {
      // if cookie exists
      offset += search.length;
      // set index of beginning of value
      end = document.cookie.indexOf(";", offset);
      // set index of end of cookie value
      if (end == -1)
        end = document.cookie.length;
      return unescape(document.cookie.substring(offset, end));
     }
  }
  return defaultVal;
}
function displayCalendar(month, year)
{
  var calref;
  var i = 0;
  var days = getDaysInMonth(month, year);
  var firstOfMonth = new Date (year, month-1, 1);
  var startingPos = firstOfMonth.getDay();
  days += startingPos;
  document.writeln("<TABLE  CELLSPACING=0 CELLPADDING=0 BORDER=0
WIDTH=\"100%\">");
  document.writeln("<TR><TD align=center valign=middle><tt class=sett>");
  document.writeln("<a class=su href=\"" + thisFilesName +
"\"onClick=\"prevMonth();\">&lt;&lt;&nbsp;&nbsp;");
  document.writeln("<a class=su href=\"" + thisFilesName + "\"
onClick=\"thisMonth();\">Oggi");
  document.writeln(" <a class=su href=\"" + thisFilesName + "\"
onClick=\"nextMonth();\">&nbsp;&nbsp;&gt;&gt;");
  document.writeln("</tt></TD></TR>");
  document.writeln("<TR><TD NOWRAP ALIGN=CENTER>");
  document.writeln("<TABLE CELLSPACING=0 CELLPADDING=1 BORDER=0
width=\"100%\">");
  document.writeln("<TR><TD colspan=7 NOWRAP align=center VALIGN=middle><TT
class=mm>");
  document.write(monthnames[month]);
  document.write(" ");
  document.write(year);
  document.writeln("</TT></TD></TR>");
  document.writeln("<TR>");
  document.writeln("<TD NOWRAP align=center><TT class=sett>D</TT></TD><TD
NOWRAP align=center><TT class=sett>L</TT></TD>");
  document.writeln("<TD NOWRAP align=center><TT class=sett>M</TT></TD><TD
NOWRAP align=center><TT class=sett>M</TT></TD>");
  document.writeln("<TD NOWRAP align=center><TT class=sett>G</TT></TD><TD
NOWRAP align=center><TT class=sett>V</TT></TD>");
  document.writeln("<TD NOWRAP align=center><TT class=sett>S</TT></TD>");
  document.writeln("</TR>");
  document.write("<TR>");
  for (i = 0; i < startingPos; i++)
  {
    document.write("<TD NOWRAP align=center><TT></TT></TD>");
  }
  for (i = startingPos; i < days; i++)
  {
    if ( i != 0 && i%7 == 0 )
    {
      document.writeln("</TR><TR>");    }
    document.write("<TD NOWRAP align=center><TT class=gg>");
    if ((calref = getCalendarLink(month, i-startingPos+1, year)) >= 0)
    {
      document.write("<a class=giorno href=\"" + calLinks[calref][3] +
"\"><b><font color=\"#116FC7\">");
      document.write(i-startingPos+1);
      document.write("</font></b></a>");
    }
    else
      document.write(i-startingPos+1);
    document.write("</TT></TD>");
  }
  for (i=days; i<42; i++)
  {
    if ( i%7 == 0 )
      document.writeln("</TR><TR>");
    document.write("<TD NOWRAP align=center><TT></TT></TD>");
  }
  document.write("</TR>");
  document.write("</TABLE>");
  document.write("</TD></TR>");
  document.writeln("</table>");
}
function getDaysInMonth(month, year)
{
  var days;
  if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10
|| month==12)
    days=31;
  else if (month==4 || month==6 || month==9 || month==11)
    days=30;
  else if (month==2)
  {
   if (isLeapYear(year))
     days=29;
   else
     days=28;
  }
  return (days);
}
function isLeapYear (Year)
{
  if (((Year % 4 == 0) && !(Year % 100 == 0)) || (Year % 400 == 0))
    return (true);
  else
    return (false);
}
// End -->
</script>

 document.write("</font></b></a>");
http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data
L'elemento SCRIPT (o STYLE) si chiude alla prima occorrenza della
stringa '</'.

Non sono praticissima di javascript, me la spieghi meglio?

 Non sono praticissima di javascript, me la spieghi meglio?
Se il convalidatore incontra la sequenza di caratteri '</' all'interno
di un blocco SCRIPT (o STYLE) considera quella come la chiusura del
blocco stesso.
Esempio:
Per il convalidatore o qualsiasi altro software che interpreti alla
lettere le specifiche, scrivere:
<script>
  document.write('<p>hello, world!</p>');
</script>
E' identico a scrivere:
<script>
  document.write('<p>hello, world!
</script>
p></script>
E quindi viene segnalata la chiusura di un tag non aperto (il secondo
</SCRIPT>). In piu' possono essere segnalati altri errori se quel codice
sta all'interno di HEAD, perche' HEAD non puo' contenere testo (e 'p>'
viene interpretato come normale testo).
La soluzione e' quindi fare in modo che la stringa '</' non compaia mai
all'interno di SCRIPT o STYLE. Il "come fare" dipende dal linguaggio di
scripting, comunque per JavaScript puoi risolvere con:
document.write('<p>hello, world!<' + '/p>')

Ci ho provato ma mi mette tutti i + nel calendario!
Amen...mi tocca non validare la pagina
Grazie mille comunque

 Amen...mi tocca non validare la pagina
Si', beh, tanto di browser che prendono sul serio quel capitolo delle
specifiche non ne esistono.