05. februar 2003 - 11:13Der er
17 kommentarer og 1 løsning
W3C complient kode fra MS contenteditable kode
Halløj,
Sidder og koder på noget CMS hvor jeg anvender MS contenteditable modellem som efterhånden er klassikeren. Det er ikke første gang og sikkert ikke sidste gang jeg har gang i dén komponent. Koden MS genererer er langt fra køn og slet ikke W3C complient - jeg sigter efter en 4.01 validering.
Hvad jeg har gang i er ala min tagster en funktion der renser denne genererede kode og formaterer det tilnærmelsesvist kønt, dog uden at ændre noget vitalt. Jeg har ledt efter en komponent i PHP der kunne dette men det nærmeste jeg kom var htmltidy der skal installeres på serveren - ikke ret portabelt.
Skal jeg opfinde den dybe tallerken igen eller sidder nogen med noget brugbart kode man kan bygge videre på eller optimere. Jeg stiller naturligvis det endelige resultat til rådighed for dem som har sådanne lyster. Eller sidder du inde med en viden, så du vil deltage i selve løsningen, er der da også mulighed for det.
Hvorfor er man så fokuseret på w3c? validitet - altså jeg mener at et billede ikke har alt"" er det ikke ligegyldigt? - jeg spørger af ren nysgerrighed.
Hmm..indryks er nok værre. lowercase og tags du ikke vil have osv. kan du klare således (gør jeg selv)
function RydOp(str){ var patternArray = new Array("STRONG","P","EM","UL","U","LI","OL","BLOCKQUOTE","H1","H2","H3","H4","H5","H6","TABLE","TBODY","TR","TH","TD","IMG","SRC"); //Lav ovenstående om til lowercase for(var i=0;i<patternArray.length;i++){ var openPattern = new RegExp("<" + patternArray[i] + "[^>]*>","g"); var closePattern = new RegExp("</" + patternArray[i] + "[^>]*>","g"); var openTag = "<" + patternArray[i].toLowerCase() + ">"; var closeTag = "</" + patternArray[i].toLowerCase() + ">"; str = str.replace(openPattern,openTag);str = str.replace(closePattern,closeTag);} //<hr> og <br> ordner vi seperat - således har vi også mulighed for xhtml str = str.replace(/<HR>/g,"<hr>");str = str.replace(/<BR>/g,"<br>"); //Links var openLinkPattern = /<A\s/g;var closeLinkPattern = /<\/A>/g; str = str.replace(openLinkPattern,"<a ");str = str.replace(closeLinkPattern,"</a>"); //Vi fjerner det vi ikke vil have var tagsPattern = /<\/?[^(\/?strong|\/?p|\/?em|\/?u|\/?ul|\/?li|\/?a|\/?ol|\/?blockquote|\/?h1|\/?h2|\/?h3|\/?h4|\/?h5|\/?h6\/?table\/?tbody\/?tr\/?th\/?td\/?img\/?src][^>]*>/g; str = str.replace(tagsPattern,""); //Ryd op i resten - dog ikke links var msPattern = /<[^a][^>]*:[^>]*>/gi;str = str.replace(msPattern,""); //Fjern tomme linjer var spacePattern = /\s*\r\s*\r/g;str = str.replace(spacePattern,""); //Fjern tomme tags var emptyPattern = /<[^\/>]*><\/[^>]*>/g;str = str.replace(emptyPattern,""); return str; }
pel: nu er koden du giver godtnok js og med lidt velvilje kunne skrives på én eller to linier PHP av: der findes flere browsere end MS :) vil man gerne være complient med de fleste er W3C et godt udgangspunkt
av >> Det er også et spørgsmål om at vi er flere og flere udviklere, der er trætte af at ingen overholder standarderne. At man før skulle kode sine websider i flere versioner, hvis de skulle virke i forskellige browsere og browserversioner... hvis alle holder standarderne og browserfirmaerne også gør... vil livet være meget lettere for os.
alt-parametern på img-tagget er vigtig, hvis du browser med billeder slået fra, fra en tekstbaseret browser, eller f.eks. fra en browser for blinde.
nil.dk>> gode argumenter, men nu er jeg "hobby" programør, men vil meget gerne forsøge at overholde standarderne, jeg har suset rundt på w3c, men synes ikke rigtig jeg kan finde noget om hvad man må og hvad man ikke må.
f.eks. kan jeg ikke finde ud af hvorfor man ikke må have <form ....> inde i en tabel celle??
nil.dk>> jeg har suset lidt rundt der, men jeg kan simpelthen ikke finde ud af hvorfor man ikke må have <form ....> inde i en tabel celle?? - nu er dette bare et eks (selvom jeg gerne ville vide hvorfor - ved du det?), når jeg validerer noget kode får jeg at vide - at det må man ikke og i beskrivelsen af fejlen bliver jeg ikke meget klogere ;-/
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.