Forum Moderators: open
test.html
<html>
<head>
<script language="Javascript">
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1)? true : false;
var regexp = new RegExp("[\r]","gi");
function storeCaret(selec)
{
if (isMozilla)
{
// Si on est sur Mozilla
oField = document.forms['news'].elements['newst'];
objectValue = oField.value;
deb = oField.selectionStart;
fin = oField.selectionEnd;
objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );
//alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
oField.selectionStart = strlen(objectValueDeb);
oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
oField.focus();
oField.setSelectionRange(
objectValueDeb.length + selec.length + 2,
objectValueDeb.length + selec.length + 2);
}
else
{
// Si on est sur IE
oField = document.forms['news'].elements['newst'];
var str = document.selection.createRange().text;
if (str.length>0)
{
// Si on a selectionné du texte
var sel = document.selection.createRange();
sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
sel.collapse();
sel.select();
}
else
{
oField.focus(oField.caretPos);
//alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();
var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['newst'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();
}
}
}
</script>
</head>
<body>
<center>
<form name="news">
<input type="button" value="b" style="width:50px;font-weight:bold" onclick="storeCaret('b')">
<input type="button" value="i" style="width:50px;font-style:italic" onclick="storeCaret('i')">
<input type="button" value="u" style="width:50px;text-decoration:underline" onclick="storeCaret('u')">
<input type="button" value="quote"style="width:50px" onclick="storeCaret('quote')">
<input type="button" value="code"style="width:50px" onclick="storeCaret('code')">
<input type="button" value="url"style="width:50px" onclick="storeCaret('url')">
<input type="button" value="img"style="width:50px" onclick="storeCaret('img')"><br>
<textarea name="newst" id="newst" rows="10" wrap="virtual" cols="45"></textarea>
</form>
</center>
</body>
</html>
Validation is not required. Browsers are robust creatures that are capable of taking real garbage and making it palatable. The whole HTML/HTTP specification is designed around redundancy, assumptions and fallbacks.
You can easily design a page that fails all sorts of validations, yet displays fine.
What validation gives you is predictable behavior (more or less), and an indication of the general "health" of your page. If you (like me) insist on validating your pages, it may not actually make a difference in the way the page is displayed. In fact, IE is famous for non-standard CSS rendering, so we still need to keep its quirks in mind when we code.
However, it gives you the ability to quickly tell if there is a potential problem on your page. A validation failure may not actually cause a rendering problem, but think of it like an X-ray that shows a spot on your lung months before it becomes a cancer.
So, you are correct. Validation is not required, and many sites that use dynamically generated content don't bother to produce validated code, because they don't have to. However, just because they choose to be messy, doesn't mean we have to. In my case, producing valid code has become such a habit that I don't even think about it any more.
In fact, I take it one step further. I tend to validate XHTML 1.1, and, if the browser accepts it, I output the type as "application/xhtml+xml". This cause the browser to have a FIT if there are even small syntax mistakes.