05. februar 2006 - 11:10Der er
10 kommentarer og 2 løsninger
Javscript fejl ved innerHTML og innerText
Jeg får denne fejl i min javascript kode i IE: Linje: 271 Tegn: 5 Fejl: Der opstod en ukendt kørselsfejl Kode: 0
Fejlen kommer i min wysiwyg editor når jeg som html har skrevet <p><hr></p> (Altså når jeg bruger den vandrette streg) Fejlen kommer frem når jeg vil gå tilbage til wysiwyg fra HTML
Min kode er her: RichEdit.prototype.previewWYSIWYG = function() { if(document.all) { this.richEdit.document.body.innerHTML = this.richEdit.document.body.innerText; } else { var html = this.richEdit.document.body.ownerDocument.createRange(); html.selectNodeContents(this.richEdit.document.body); this.richEdit.document.body.innerHTML = html; } }
Det er altså her det går galt, men hvorfor?: this.richEdit.document.body.innerHTML = this.richEdit.document.body.innerText;
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
<p><hr></p> er ikke valid HTML, så det kan tænkes, det er årsagen til, at IE brækker sig :)
IE validerer f.eks. langt de fleste DOM-handlinger - i modsætning til 'browseren, der overholder standarderne' (*host-host*), Firefox. I den kan man foretage, hvad somhelst, uden den brokker sig ... f.eks. indsætte en hel tabel i et img-element!
Her bliver _intet_ valideret - og spørger man efter en ulovlig DOM-handling på body-elementets innerHTML, giver FF op og serverer i stedet et 'digt', der intet har at gøre med, hvordan innerHTML'en i virkeligheden ser ud.
- men *schhhhhhhh* ... sig det ikke til nogen ... det er sprængfarlige, politisk ukorrekte sandheder, kun ganske få vil lægge ører til ;o)
Jeg foretrækker skam også FF men skal helst køre i IE også
Hvordan kan jeg få det til at virke? Hvordan kan jeg banke ind i IE at den ikke skal brokke sig! :P
Kan jeg evt. køre en replace på <hr> tags inden jeg skifter til html og så tilbage bagefter?
Problemet er at IE selv skriver koden på den der måde Hvis jeg skriver en linje i wysiwyg så opretter den <p></p>, og hvis jeg så sletter teksten igen og indsætter <hr>, så putter den det ind mellem p tags <p><hr></p>
Den er jo ret dum, den laver selv en kode den ikke forstår :P
Okay! ... hvad mener du med "Jeg foretrækker skam også FF"? Prøv at læse mit indlæg én gang til ;o)
Det er faktisk FF, der ikke overholder standarderne - og gerne indsætter en hel tabel i et img- eller input-element - for derefter at digte om, hvad der står i innerHTML'en ;o)
Du skal ikke have IE til at lade være med at brokke sig over invalid kode, men i stedet skrive noget kode, der får den til at opføre sig korrekt - og/eller rette den kode, den skriver. Hvordan det aktuelt skal gøres, har jeg ingen anelse om - da det kræver, jeg ved præcist, hvad der foregår i editor'en ... og nej, jeg orker ikke gå editor'en igennem i enkeltheder :)
Jojo ... det er helt legalt, da hr-elementet jo er et block-level element - og derfor gerne må være barn af body-elementet. Jeg havde blot misforstået dig derhen, at editoren/browseren ikke ville tillade den syntaks :)
Du skal nu lige have noget indhold i dit p-element - mindst et ' '. Derudover er det altid skidt (og frarådes af W3C) at have 'tomme' p-elementer :)
Hvad DOM-håndtering angår, overholder IE standarderne langt bedre end FF. Desuden er FF's XHTML-DOM blot en fattig overbygning på en i forvejen buggy HTML-DOM ... ikke en særskilt DOM, som MS implementerer, når de engang lader IE understøtte XHTML.
Man skal bare være forsigtig med at sige, at FF skodder mindst ligeså meget som IE (og på mange områder langt mere). Det er jo den seneste tid blevet klart, hvor store kræfter der kan frisættes, når man krænker folks tro ... og at FF skulle være væsentligt bedre end IE er i bund og grund en religiøs opfattelse, der ikke har rod i virkeligheden :)
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.