Avatar billede hulla Novice
13. oktober 2009 - 15:51 Der er 6 kommentarer og
1 løsning

Line break i javascript

Hej

Spørgsmålet er ikke helt så let som overskriften kan antyde så svaret er ikke bare "\n" :-)

Jeg er igang med en AJAX applikation hvor al rendering foregår i Javascript og til det formål bruger jeg attachEvent for bl.a. IE browsere.

Linjen ser sådan ud:
else if (elm.attachEvent) elm.attachEvent("on" + evt, function() { eval(func) })

I dette tilfælde er (func) en streng indeholdene indholdet af en funktion.
Det ser sådan her ud:

if(confirm('Do you wish to continue \n Remember that it is for real!')){MoveOn();};

Problemet er her at strengen indeholder \n og derfor mener IE at strengen ikke er afsluttet. Jeg har prøvet med escape / unescape uden held.

Nogen forslag?
Avatar billede majbom Novice
13. oktober 2009 - 16:05 #1
prøv at sæt " rundt om strenen i stedet for '
Avatar billede hulla Novice
13. oktober 2009 - 16:17 #2
forstod jeg ikke helt,. sætte " i stedet for ' hvor?
Avatar billede majbom Novice
13. oktober 2009 - 16:30 #3
her:

if(confirm('Do you wish to continue \n Remember that it is for real!')){MoveOn();};

rettes til:

if(confirm("Do you wish to continue \n Remember that it is for real!")){MoveOn();};
Avatar billede j4k0b Nybegynder
13. oktober 2009 - 17:01 #4
splazz: der er ikke forskel på de to tegn i Javascript ligesom der er i PHP.

Hvilken version af IE bruger du? Min version (8) har intet problem med \n

Er du sikker på at de ikke bliver blandet andet "skrammel" ind i dit javascript, hvis du evt. udskriver det gennem PHP?
Avatar billede majbom Novice
13. oktober 2009 - 19:38 #5
-> j4k0b - nej det er da rigtigt, ved ikke lige hvorfor jeg fik det blandet sammen :s

-> #0 - bare glem min kommentarer :)
Avatar billede hulla Novice
14. oktober 2009 - 11:58 #6
Hej igen

Jeg har prøvet det I har skrevet indtil nu.
Fejlen reproduceres i både IE7, IE8 og Firefox 3.5.

Hvis jeg forsøger at lave en eval på denne linje i stedet for den oprindelige:

if(confirm("Do you wish to continue [LineBreak] Remember that it is for real!")){MoveOn();};

så virker det fint, bortset fra at beskeden ikke er så pæn :-)


Hele funktionen jeg kalder ser sådan ud:

function addEvent(elm, evt, func)
{
    if (elm.addEventListener) elm.addEventListener(evt, function() { eval(func) }, false);
    else if (elm.attachEvent) elm.attachEvent("on" + evt, function() { eval(func) });
    else elm["on" + evt] = eval(func);
}

og kaldet ser sådan ud:

tdElem = document.createElement("td");                       
addEvent(tdElem, "click", list[j].ImageOnclick);


Har i flere ideer?
Avatar billede hulla Novice
23. november 2009 - 10:36 #7
Jeg endte med at bygge det helt om, så løsningen kom ikke rigtig til at ligne noget af det vi talte om her.
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