Description du produit,IE+FF+Cr测试通过:
代码:
程序代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<tête>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Préh(al)</title>
<style type="text/css">
pre.preh{font-family:Consolas,"Lucida Console",monospace;}
pre.preh ol{border:1px solid #ddd;margin:0;padding:0 0 0 4em;color:gray;}
pre.preh ol li{line-height:1.75em;border-bottom:1px solid #ddd;border-left:1px solid #ddd;}
pre.preh ol li span{color:black;white-space:pre;}
pre.preh ol li span span.regexp{fond:vert;couleur:blanc}
pre.preh ol li span em{color:blue;font-style:normal;}
pre.preh ol li span var.object{couleur:rouge}
pre.preh ol li span var.method_property{color:orange}
pre.preh ol li span.comments{color:#aaa}
pre.preh li var{couleur:bleu;font-style:normal;}
pre.preh li q{couleur:vert;}
q:avant{content:aucun;affichage:aucun;}
</style>
<!--[if IE]> <style>pre.preh{font-family:fixedsys,monospace}</style> <![endif]-->
<script>
//mots-clés
var mots-clés = {js :{},html :{},css :{}} ;
mots-clés.js.keys="abstrait break byte case catch char class const continue default delete do double else extends false final finalement float pour la fonction goto si implémente l'importation dans l'instance de l'interface int long paquet nul natif privé protégé public réinitialisation retour court statique super commutateur synchronisé cela lance transitoire true try var void while with";
passwords.js.objects="Zone d'applet d'ancrage Arguments Tableau Bouton booléen Case à cocher Collection Crypto Date Dictionnaire Lecteur de documents Lecteurs Élément Énumérateur Fichier d'événement FileObject FileSystemObject FileUpload Dossier Dossiers Formulaire Cadre Fonction Historique masqué global HTMLElement Image Infinity Entrée JavaArray JavaClass JavaObject JavaPackage JSObject Layer Link Math MimeType Numéro de navigateur Objet Packages d'options Mot de passe Plugin PrivilegeManager Random RegExp Écran Sélection de chaîne Soumettre le texte Textarea URL VBArray Window WScript";
keywords.js.properties="ci-dessus abs acos action activeElement alert alinkColor toutes les ancres d'ancrage altKey appCodeName les applets appliquent appName appVersion arguments arity asin assign atan atan2 atobavailHeightavaLeftavaTopavailWidth ActiveXObject arrière-plan ci-dessous bgColor grand clignotement flou bordure en gras borderWidths bas btoa bouton appel appelé appelant CancelBubble captureEvents ceil charAt charCodeAt charset vérifié enfants classes className clear clearInterval clearTimeout cliquez clientInformation clientX clientY fermer fermé colorDepth compilation complète concat confirmer constructir contient un cookie contextuel cos crypto ctrlKey données actuelles defaultCharset defaultChecked defaultSelected defaultStatus defaultValue description DisableExternalCapture DisablePrivilege document domain E Echo element elements embeds activéPlugin EnableExternalCapture Encodage Privilege Escape eval event exec exp expando FromPoint fgColor fileName trouver le focus au sol fixe fontColor fontSize formulaire formulaires avant images fromCharCode fromElement getAttribute get getClass getDate getDay getFullYear getHours getMember getMilliseconds getMinutes getMonth getSeconds getSelection getSlot getTime getTimezoneOffset getUTCDate getUTCDay getUTCFullYear getUTCHours getUTCMilliseconds get UTCMinutes getUTCMonth getUTCSecondes getWindow getYear global go HandleEvent Hauteur hachage historique caché hôte hôte nom d'hôte href hspace id ids ignoreCase images index indexOf inner innerHTML innerText innerWidth insertAdjacentHTML insertAdjacentText isFinite isNAN italics java javaEnabled join keyCode Liens LN10 LN2 LOG10E LOG2E lang langue lastIndex lastIndexOf lastMatch lastModified lastParen couches layerX layerY left leftContext length link linkColor emplacement de chargement locationBar log lowsrc MAX_VALUE MIN_VALUE margins match max menubar method mimeTypes min modificateurs moveAbove moveBelow moveBy moveTo moveToAbsolute multiline NaN NEGATIVE_INFINITY nom naviguer navigateur netscape numéro suivant offscreenBuffering offset offsetHeight offsetLeft offsetParent offsetTop offsetWidth offsetX offsetY onabort onblur onchange onclick ondblclick ondragdrop onerror onfocus onHelp onkeydown onkeypress onkeyup onload onmousedown onmousemove onmouseover onmouseup onmove onreset onresize onsubmit onunload ouvrir les options opener externalHeight externalHTML externalText externalWidth POSITIVE_INFINITY PI paddings pageX pageXOffset pageY pageYOffset parent parentElement parentLayer parentWindow parse parseFloat parseInt pathname personalbar pixelDepth plugins de plateforme pop port pow préférence prototype de protocole d'invite d'impression précédente push random readyState raison référent actualiser releaseEvents reload supprimerAttribute supprimerMember remplacer resizeBy resizeTo returnValue inverse droite droitecontext rond SQRT1_2 SQRT2 screenX screenY défilement barres de défilement scrollBy scrollIntoView scrollTo rechercher sélectionné sélectionné selectedIndex self setAttribute setDay setFullYear setHotkeys setHours setInterval setMember setMilliseconds setMinutes setMonth setResizing setSeconds setSlot setTime setTimeout setUTCDate setUTCFullYear setUTCHours setUTCMillseconds setUTCMinutes setUTCMonth SETUTCSECONDS SETYEAR SETZOPTIONS SHIFT SHIFTKEY SIBLINGABOVE SIBLINGBELOW SIGNETTH touppercase toUTCString type typeOf UTC unescape unshift untaint unwatch userAgent userLanguage value valueOf visibilité vlinkColor vspace regarder quelle largeur de fenêtre écrire writeln zIndex";
fonction htmlEncode(strS){
return strS.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
}
fonction htmlEncodef(c){
return c=="&"?'&':(c=="<"?'<':(c=='>'?'>':c));
}
fonction htmlEncodefl(c){
return c=="&"?5:(c=="<"||c=='>'?4:1);
}
fonction html2txt(strS){
return strS.replace(/</g,"<").replace(/>/g,">").replace(/ /g," ").replace(/<br/?>/g," rn").replace(/&/g,"&").replace(/<.+?>/g,"");
}
var lexers = {}
lexers.js = {
regKW:new RegExp("^("+keywords.js.keys.replace(/ /g,"|")+")$","g"),
regObj:new RegExp("^("+keywords.js.objects.replace(/ /g,"|")+")$","g"),
regMP:new RegExp("^("+keywords.js.properties.replace(/ /g,"|")+")$","g"),
clKW : '<em>$1</em>',
clObj : '<var class="object">$1</var>',
clMP :'<var class="method_property">$1</var>',
lex:fonction(s){
var str=" ", c="",word='',lastState="", seq, intNextQuote, intTemp, intCount, intWordStart, glbStr=s,i;
glbStr=glbStr.replace(/r|n/g,'rn');
glbStr=glbStr.replace(/rnrn/g,'rn');
pour(i=0;i<glbStr.length;i++){
c=glbStr.charAt(i);
commutateur(c){
cas """:
str+=htmlEncodef(c);
intNextQuote=i;
while(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf(""",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!=" \")break ;
intCount=0 ; intTemp=intNextQuote;
while(glbStr.charAt(--intTemp)==" \")intCount ++;
if(intCount%2==0)break;
}
if(intNextQuote==-1)break;
str+="<q>"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</q>"";
i=intNextQuote;
dernierÉtat="";
casser;
cas "'":
str+=htmlEncodef(c);
intNextQuote=i;
while(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf("'",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!=" \")break ;
intCount=0 ; intTemp=intNextQuote;
while(glbStr.charAt(--intTemp)==" \")intCount ++;
if(intCount%2==0)break;
}
if(intNextQuote==-1)break;
str+="<q>"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</q>'";
i=intNextQuote;
dernierÉtat="";
casser;
cas "/":
str+=htmlEncodef(c);
si(glbStr.charAt(i+1)=="/"){
intNextQuote=i;
intNextQuote=glbStr.indexOf('rn',intNextQuote+1);
if(intNextQuote==-1)intNextQuote=glbStr.length;
str=str.substring(0,str.length-1);
str+="<span class="comments">/"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</span>";
i=intNextQuote;
}sinon if(glbStr.charAt(i+1)=="*"){
intNextQuote=i;
intNextQuote=glbStr.indexOf("*/",intNextQuote+1);
if(intNextQuote==-1)return;
str=str.substring(0,str.length-1);
str+="<span class="comments">/"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"*/</span>";
je=intNextQuote+1;
}else if(str.match(/(?:(?:[!=(]|</var>|[|,|n|:)[ t]*/$)|^ n?[t ]*/$/)){
intNextQuote=i;
while(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf("/",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!=" \")break ;
intCount=0;intTemp=intNextQuote;
while(glbStr.charAt(--intTemp)==" \")intCount ++;
if(intCount%2==0)break;
}
if(intNextQuote==-1)break;
str+="<span class="regexp">"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</span>/";
i=intNextQuote;
dernierÉtat="";
}
dernierÉtat="";
casser;
défaut:
if(c.match(/w/))mot+=c; //en un mot
si(c.match(/W/)){
si(mot!='')
str+=word.replace(this.regKW,this.clKW).replace(this.regObj,this.clObj).replace(this.regMP,this.clMP) + htmlEncodef(c)
sinon str+=htmlEncodef(c);
mot = '';
}
dernierÉtat="";
casser;
}
}
return str.replace(/(s*r?n)+$/,'');
}
} ;
fonction str2styled(x,langue){
var _A = lexers[langue].lex(html2txt(x)).split(/n/);
for(i=0;i<_A.length;i++){_A[i] = '<li><span>'+_A[i].replace(/r/g,'').replace(/ t/g,' ').replace(/ /g,' ')+'</span></li>';}
return '<ol>'+_A.join('')+'</ol>';
}
var $ = function(e){return document.getElementById(e)};
window.onload = fonction(){
var pres = document.getElementsByTagName('pre');
for(k=0;k<pres.length;k++)if(pres[k].className.match(/bprehb/))
pres[k].innerHTML = str2styled(pres[k].innerHTML,'js')
}
</script>
</tête>
<corps>
<pre id="test" class="preh js">
var point = fonction(){
ceci.x = 1;
ceci.y = 2;
this.valueOf = function(){return 'Point:('+x+','+y+')'};
}
si(c<2)f()
var P = nouveau point();
alert(P.valueOf());
var rex_factory = function(){return {x:/re/g,y:/rere/g,z:[/re/,/rere/,/rerere/]}};
</pre>
<pre id="test2" class="preh js">
another = 'c'est un autre exemple'
</pre>
</body>
</html>