27. november 2003 - 00:16Der er
9 kommentarer og 1 løsning
Betalt Javascript opgave
Hej,
Jeg søger en Javascipt programmør der kan hjælpe mig med en lille funktion.
Opgaven: Jeg har en DHTML editor som man skal kunne indsætte indhold i kopieret fra et word dokument. Problemet er at når man kopierer direkte fra Word så medtages der også font tags for skrifttype og størrelse osv. Disse tags har jeg brug for at få fjernet så de ikke går ind og "overrider" mit CSS dokument.
Altså en pasteFromWord-funktion....
For en øvet Javascripter (der evt. har erfaring med CMS) skulle det være en hurtig opgave.
Det er en hasteopgave!
Kontakt mig gerne hurtigst muligt, og stil endelig spørgsmål hvis der er noget der skal uddybes.
det er _ikke_ en triviel opgave. output fra word er noget frygteligt rod. hvis du vil have et ordentligt resultat, bør du sende koden til serveren, filtrere den gennem htmltidy og returnere den. (det kan gøres uden at skulle reloade siden, vha. MSXML). hvis du ikke kan/vil bruge htmltidy, men _vil_ have en javascriptløsning, så tag et kig på htmlarea, hvor de faktisk har implementteret den funktion : http://dynarch.com/htmlarea/
msxml er en activex-component ... en slags udviddelse af javascript, men kun for internet explorer (mozilla har iøvrigt en pendand, der hedder xmlextras) ... det er blot en måde at hente data clientside (altså i et javascriptprogram) uden at skulle genloade siden. i den metode, jeg beskriver, bruges msxml til at etablere forbindelsen til serveren (kunne også gøres i en form i en skjult iframe), mens det er htmltidy som laver selve clean-up funktionen. htmltidy er et program specielt udviklet til at rydde op i rodet htmlkode (og den er ret effektiv med word-skrammel), men du skal altså have adgang til at installere og køre dette program på din server, og du skal have et serverside script til at håndtere kommunikationen mellem htmltidy og javascript-programmet.
Jeg har i forvejen denne cleanFromWord funktion:function cleanFromWord() { var oEditorTmp = eval("idContentTmp"+this.oName); for (var i = 0; i < oEditorTmp.document.body.all.length; i++) { oEditorTmp.document.body.all[i].removeAttribute("className","",0); oEditorTmp.document.body.all[i].removeAttribute("style","",0); } var sHTML = oEditorTmp.document.body.innerHTML;
var str = sHTML;
var arrTmp = str.split('<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />'); if (arrTmp.length > 1) str = arrTmp.join("");
var arrTmp = str.split("<o:p>"); if (arrTmp.length > 1) str = arrTmp.join("");
var arrTmp = str.split("</o:p>"); if (arrTmp.length > 1) str = arrTmp.join("");
var arrTmp = str.split("<o:p> </o:p>"); if (arrTmp.length > 1) str = arrTmp.join("");
return str; }
Kan den ikke udvides så jeg slipper af med font tags?
Den ser rigtig imponerende ud, men hvordan integrerer jeg den med min editor? Jeg kan vel ikke bare erstatte min eksisterende funktion med denne eller hvad?
hvis jeg har forstået din kode ret, kan du koble dem sammen såddan her : // erstatter den gamle funktion function cleanFromWord() { var oEditorTmp = eval("idContentTmp"+this.oName); var sHTML = oEditorTmp.document.body.innerHTML;
anyway ... som sagt - det er en lappeløsning ... hvis du vil have et ordentligt resultat, er du nødt til at køre det igennem htmltidy.
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.