Avatar billede hoppe11 Nybegynder
12. maj 2009 - 22:53 Der er 9 kommentarer og
1 løsning

object i eval()

hvordan kan jeg smide et object i en eval() ?

eval('alert('+top.document+')');

jeg får:
'object' is undefined
Avatar billede tjens Nybegynder
12. maj 2009 - 23:21 #1
Hvad forventer du at der skal komme ud af det?

Alert kan fremvise en tekststreng eller anden variabel.
Derfor kan der ikke være et objekt i alert.
Avatar billede fennec Nybegynder
13. maj 2009 - 07:56 #2
Du skal bare skrive det inde i strengen:
eval('alert(top.document)');
Avatar billede hoppe11 Nybegynder
13. maj 2009 - 10:10 #3
ok.. måske et dårligt eksempel

jeg skal kalde en callback function

eval('callback_func('+document+')');
Avatar billede hoppe11 Nybegynder
13. maj 2009 - 10:13 #4
ja selvfølgelig, fennec

smid et svar :)
Avatar billede fennec Nybegynder
13. maj 2009 - 10:20 #5
.o) <-- One Eyed Jack
Avatar billede tjens Nybegynder
13. maj 2009 - 10:47 #6
Eksempel på at eval udfører input som java script:
<title> 7 * 8 </title>
...
alert(top.document.title);
eval('alert('+top.document.title+')');

Output:
7 * 8
56
Avatar billede hoppe11 Nybegynder
13. maj 2009 - 14:19 #7
jeg var sgu lige lidt for hurtig.. det virker stadig ikke

så snart jeg tilføjer min callback_var (eller document som det er i eksemplet) i eval() melder den fejl..

function json_post(response, get_str, callback_function, callback_var)
{
    var xmlhttp;
    var self = this;
   
    if(window.XMLHttpRequest) self.xmlhttp = new XMLHttpRequest();
    else if(window.ActiveXObject) self.xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
   
    self.xmlhttp.open('POST', response, true);
    self.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlhttp.onreadystatechange = function()
    {
        if(self.xmlhttp.readyState == 4 && callback_function) eval(callback_function+'('+self.xmlhttp.responseText+', '+document+')');
    }
    self.xmlhttp.send(get_str);
}
Avatar billede hoppe11 Nybegynder
13. maj 2009 - 14:21 #8
altså linjen her:
eval(callback_function+'('+self.xmlhttp.responseText+', '+callback_var+')');
Avatar billede hoppe11 Nybegynder
13. maj 2009 - 14:24 #9
virker:
eval(callback_function+'('+self.xmlhttp.responseText+')');

virker ikke:
eval(callback_function+'('+self.xmlhttp.responseText+', '+callback_var+')');
Avatar billede hoppe11 Nybegynder
13. maj 2009 - 15:27 #10
mig der er galt på den.. callback_var sal bare skrives som en string :)
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