You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
300 lines
6.2 KiB
300 lines
6.2 KiB
|
|
<!-- VALIDATOR Marc Delacroix -->
|
|
|
|
<html>
|
|
<head>
|
|
<title>Validator</title>
|
|
<script language=javascript>
|
|
|
|
var res=""
|
|
var tagsStack=new Array
|
|
var totalErrCount=0
|
|
|
|
function getTagName(s)
|
|
{
|
|
var res=""
|
|
var len=s.length
|
|
for (var i=0;i<len;i++)
|
|
{
|
|
var c=s.charAt(i)
|
|
if ((c==" ")||(c==">")) return res
|
|
else if (c!="/") res+=c
|
|
}
|
|
return res
|
|
}
|
|
|
|
function pushTag(s)
|
|
{
|
|
tagsStack[tagsStack.length]=s
|
|
}
|
|
|
|
|
|
function currentStack()
|
|
{
|
|
var len=tagsStack.length
|
|
if (len>0) return tagsStack[len-1]
|
|
else return ""
|
|
}
|
|
|
|
function popTag()
|
|
{
|
|
var len=tagsStack.length
|
|
if (len>0)
|
|
{
|
|
var res=tagsStack[len-1]
|
|
tagsStack.length=len-1
|
|
return res
|
|
}
|
|
return ""
|
|
}
|
|
|
|
function writeResult(url,inner)
|
|
{
|
|
var errorsCounter=0
|
|
tagsStack.length=0
|
|
|
|
// Supprimer les scripts
|
|
while(inner.toLowerCase().indexOf("<script")>=0)
|
|
{
|
|
var inner2=inner.toLowerCase()
|
|
inner=inner.slice(0,inner2.indexOf("<script"))+inner.slice(inner2.indexOf("/script>")+8)
|
|
}
|
|
|
|
// Supprimer les commentaires
|
|
while(inner.toLowerCase().indexOf("<!--")>=0)
|
|
{
|
|
var inner2=inner.toLowerCase()
|
|
inner=inner.slice(0,inner2.indexOf("<!--"))+inner.slice(inner2.indexOf("-->")+3)
|
|
}
|
|
|
|
var len=inner.length
|
|
var innerLow=inner.toLowerCase()
|
|
|
|
var res2=""
|
|
var resTab=new Array
|
|
var sht=0
|
|
var blue=false
|
|
|
|
for (var i=0;i<len;i++)
|
|
{
|
|
var c=inner.charAt(i)
|
|
var endStr=innerLow.slice(i+1)
|
|
|
|
// DEBUT DE TAG
|
|
if (c=="<")
|
|
{
|
|
blue=true
|
|
|
|
// TAG FERMANT
|
|
if (inner.charAt(i+1)=="/")
|
|
{
|
|
var tagName=getTagName(endStr)
|
|
sht--
|
|
//res2+='<span class="a'+sht+'"></span>' //</div>'
|
|
res2+="<br>"
|
|
for (var j=0;j<sht;j++) res2+="| "
|
|
|
|
|
|
if (popTag()!=tagName)
|
|
{
|
|
errorsCounter++
|
|
res2+="<<font color=red><b>"
|
|
}
|
|
else
|
|
res2+="<<font color=blue><b>"
|
|
}
|
|
|
|
// TAG OUVRANT
|
|
else
|
|
{
|
|
//res2+='<span class="a'+sht+'"></span>' //</div>'
|
|
res2+="<br>"
|
|
for (var j=0;j<sht;j++) res2+="| "
|
|
|
|
|
|
var mustShift=true
|
|
var tagName=getTagName(endStr)
|
|
|
|
// TAGS SIMPLES
|
|
|
|
if (tagName=="img") mustShift=false
|
|
if (tagName=="?xml:namespace") mustShift=false
|
|
if (tagName=="param") mustShift=false
|
|
if (tagName=="br") mustShift=false
|
|
if (tagName=="hr") mustShift=false
|
|
if (tagName=="input") mustShift=false
|
|
if ((tagName=="frame")&&(endStr.indexOf("frameset")!=0)) mustShift=false
|
|
|
|
|
|
// REPETITION DE TAGS
|
|
var stk=currentStack()
|
|
|
|
|
|
if ((tagName=="p")&&(stk=="p")) mustShift=false
|
|
if ((tagName=="li")&&(stk=="li")) mustShift=false
|
|
|
|
|
|
if (mustShift)
|
|
{
|
|
sht++
|
|
pushTag(tagName)
|
|
}
|
|
res2+="<<font color=blue><b>"
|
|
}
|
|
}
|
|
|
|
// FIN DE TAG
|
|
else if (c==">")
|
|
{
|
|
if (blue)
|
|
{
|
|
res2+="</b></font>"
|
|
blue=false
|
|
}
|
|
res2+=">"
|
|
}
|
|
|
|
// FIN NOM DE TAG
|
|
else if (c==" ")
|
|
{
|
|
if (blue)
|
|
{
|
|
res2+="</b></font>"
|
|
blue=false
|
|
}
|
|
res2+=" "
|
|
}
|
|
else res2+=c
|
|
|
|
|
|
if (res2.length>0)
|
|
{
|
|
resTab[resTab.length]=res2
|
|
res2=""
|
|
}
|
|
}
|
|
|
|
var theRes=resTab.join("")
|
|
|
|
if (tagsStack.length!=0) errorsCounter++
|
|
|
|
totalErrCount+=errorsCounter
|
|
|
|
if (errorsCounter>0)
|
|
res+="<br><br><hr><br><font color=red>=====> URL DU FRAME \""+url+"\" <b>ERREURS = "+errorsCounter+"</b></font><br><br>"+theRes
|
|
else
|
|
res+="<br><br><hr><br><font color=green>=====> URL DU FRAME \""+url+"\" PAS D'ERREURS</font><br><br>"+theRes
|
|
}
|
|
|
|
function getAllErrors()
|
|
{
|
|
var lyr=document.all?document.frames[0].document.all["results"]:frames[0].document.getElementById("results")
|
|
lyr.innerHTML="<span class=total><b><i>TOTAL erreurs = "+totalErrCount+"</i></b></span><br>"+res
|
|
}
|
|
|
|
var _theResDoc=null
|
|
var _theResElem=null
|
|
|
|
function getResDoc()
|
|
{
|
|
if (_theResDoc==null)
|
|
_theResDoc=document.all?document.frames[0].document:frames[0].document
|
|
return _theResDoc
|
|
}
|
|
|
|
function getResElem()
|
|
{
|
|
if (_theResElem==null)
|
|
_theResElem=getResDoc().getElementById("results")
|
|
|
|
return _theResElem
|
|
}
|
|
|
|
_allFrames=new Array
|
|
_allBods=new Array
|
|
|
|
_restrict=""
|
|
_restrictID=""
|
|
|
|
function sniffFrame(currIndex)
|
|
{
|
|
var lyr=getResDoc().getElementById("progress")
|
|
lyr.innerHTML="processing frame #"+(currIndex+1)+" on "+_allFrames.length
|
|
|
|
|
|
|
|
var frame=_allFrames[currIndex]
|
|
var bod=_restrictID!=""?frame.document.getElementById(_restrictID):_allBods[currIndex]
|
|
|
|
if ((_restrict=="")||(frame.location.href.indexOf(_restrict)>=0))
|
|
{
|
|
res=""
|
|
if (bod) writeResult(frame.document.location,""+(document.all?bod.outerHTML:bod.innerHTML))
|
|
var theDoc=getResDoc()
|
|
var lyr=getResElem()
|
|
|
|
theSpan=theDoc.createElement('span');
|
|
theSpan.innerHTML=res
|
|
lyr.appendChild(theSpan)
|
|
|
|
res=""
|
|
}
|
|
|
|
currIndex++
|
|
if (currIndex<_allFrames.length)
|
|
setTimeout("sniffFrame("+currIndex+")",1)
|
|
else
|
|
{
|
|
// THE END !!!!!!
|
|
_allFrames.length=0
|
|
_allBods.length=0
|
|
var lyr=getResDoc().getElementById("progress")
|
|
lyr.innerHTML="Validation Done !"
|
|
}
|
|
}
|
|
|
|
function sniffer(frame)
|
|
{
|
|
res=""
|
|
var sub=frame.frames
|
|
var bod=frame.document.body
|
|
|
|
_allBods[_allBods.length]=bod
|
|
_allFrames[_allFrames.length]=frame
|
|
|
|
var nbsub=sub.length
|
|
for (var i=0;i<nbsub;i++) sniffer(sub[i])
|
|
}
|
|
|
|
function startSniff()
|
|
{
|
|
totalErrCount=0
|
|
res=""
|
|
|
|
getResElem().innerHTML=""
|
|
|
|
|
|
sniffer(document.all?document.frames.content:window.frames["content"])
|
|
sniffFrame(0)
|
|
}
|
|
|
|
function sniff()
|
|
{
|
|
var lyr=getResDoc().getElementById("progress")
|
|
lyr.innerHTML="Validation in progress..."
|
|
|
|
_restrict=getResDoc().getElementById("restrict").value
|
|
_restrictID=getResDoc().getElementById("restrictID").value
|
|
|
|
setTimeout("startSniff()",100)
|
|
}
|
|
</script>
|
|
<head>
|
|
<frameset rows="40%,*">
|
|
<frame name="results" id="results" src="validator_res.html">
|
|
|
|
<!-- URL DE LA PAGE A TESTER ICI -->
|
|
<frame name="content" id="content" src="/businessobjects/enterprise115/desktoplaunch/viewers/cdz_adv/lib/samples/default.html">
|
|
|
|
</frameset>
|
|
</html> |