Avatar billede thomasabcd Nybegynder
25. juli 2007 - 12:34 Der 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?
Avatar billede olebole Juniormester
25. juli 2007 - 12:51 #1
<ole>

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>
Avatar billede 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.
Avatar billede olebole Juniormester
26. juli 2007 - 13:06 #3
Der er specifikt det galt med innerHTML, at:

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 ......  =)
Avatar billede 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).
Avatar billede olebole Juniormester
26. juli 2007 - 14:01 #5
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.
Avatar billede 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.

Forresten hvad er invalid javascript?
Avatar billede olebole Juniormester
26. juli 2007 - 14:56 #7
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
Avatar billede thomasabcd Nybegynder
12. august 2007 - 19:05 #8
olebole kan du ikke smide et svar?
Avatar billede olebole Juniormester
12. august 2007 - 23:21 #9
gerne  =)
Avatar billede olebole Juniormester
13. august 2007 - 16:09 #10
Tak for points  =)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester