25. juli 2007 - 12:34Der er
9 kommentarer og 1 løsning
decode string
Jeg har en webservice som returnerer noget html og javascript som en streng, som skal sættes ind på siden ved at sætte innerHTML på den div til det html+javascript, som webservicen returnerer.
Det fungerer fint med at indsætte htmlen men ikke med at indsætte javascripten. Strengen, som webservicen returnerer, encodes, så eksempelvis encodes "<" til "\u003C" etc. Dette gør, at javascript-funktionerne ikke virker. Kan jeg decode strengen, så javascripten virker?
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
For det første bør du undlade at HTML-formatere data på serveren - og undgå innerHTML. InnerHTML-property'en er, har altid været og vil altid være invalid i alle standarder. Desværre har w3schools.com skrevet en elendig, fejlbefængt tutorial om AJAX, hvilket har spredt total misforståelse af, hvad AJAX er og hvordan det virker/bruges.
Desuden _skal_ specialtegn være encoded i JS. Et '<' _skal_ encodes som '\u003C', hvis det skal optræde i en streng i JavaScript. Jeg ved godt, at innerHTML så ikke indsætter HTML, men tekst - men det viser blot, hvordan innerHTML er i total modstrid med alle standarder.
Returner i stedet data i XML- eller JSON-format - og indsæt så disse data i elementer, du opretter og indsætter i dokumentet med DOM
/mvh </bole>
Synes godt om
Slettet bruger
25. juli 2007 - 14:17#2
Hvad er det helt specifikt der er galt emd innerHTML?
Den har jeg da anvendt tit til at lægge f.eks. kalendere ind på en side. Her giver serveren direkte formateret HTML og teksten skal bare sættes på siden.
I den nuværende applikation jeg roder med er jeg dog gået over til at anvende jquery, hvad den gør bag scenen ved jeg ikke, men den virker ganske glimrende.
1) den ikke er valid og kan aldrig blive det 2) den overskriver dokumentfragmentet, den bruges på, hvorved programmatiske referencer til og fra fragmentet mistes 3) den er buggy i FF, hvor den ikke nødvendigvis afspejler DOM'ens faktiske tilstand 4) den strider direkte mod alt det, vi forsøger at arbejde hen imod med W3C's standarder
JQuery består i udstrakt grad af hamrende invalid kode, så den bør du helt klart også undgå. At noget virker, er ikke nødvendigvis en kvalitet. En flaske saltpetersyre er således ganske virksom mod problemer vedr. overvægt, meeeeeen ...... =)
Synes godt om
Slettet bruger
26. juli 2007 - 13:27#4
og hvad vil du så anbefale i stedet.
jeg synes JQuery er ganske glimrende og nemt at arbejde med til at jeg skal bruge. Det virker i FF og Safari (vi anvender ikke IE, så den gider jeg slet ikke teste i).
Hvis det er en 'offentlig' side, er det, I bruger, vel noget af det mindst interessante i denne verden. Det handler om, hvad jeres evt. brugere anvender ;o) Da IE uden sammenligning er markedets mest udbredte browser - på trods af fejlfyldte kampagner om Firefox' påståede fortræffeligheder - er det en væsentlig fejl ikke at teste i den. Det virker ret uprofessionelt.
Da det er yderst vanskeligt at finde gode koder (og for den sags skyld gode kodere), ville jeg dog klart foretrække at skrive det selv. Hvis dårlig, invalid kode er godtnok til dig, så er JQuery vel helt okay ... men hvis kvalitet nu havde været et emne, du kunne tage seriøst, så burde du nok have valgt noget andet.
Synes godt om
Slettet bruger
26. juli 2007 - 14:38#6
Det er en intern administativ applikation, så ser jeg ingen problemer i at fjerne IE. Alle de brugere som skal anvende applikationen sidder på Mac eller Linux, så IE er irrelevant.
Okay, så kan man sagtens lave browser-restriktioner =)
Invalid JavaScript er JavaScript, der ikke er defineret i JavaScript-referencen. Nu er det jo så ikke ret meget invalid JavaScript, der er tale om i denne tråd, men snarere invalid DOM - og den vedligeholdes af W3C
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.