Avatar billede Acidum Nybegynder
19. juli 2009 - 19:39 Der er 17 kommentarer og
1 løsning

GetElementByID i IFrame

Hej Eksperter.

Jeg vil gerne have min webbrowser i min windows app til automatisk at skrive i en tekstbox på siden når den er loadet.

normalt er det sådan her:

Webbrowser1.document.getelementbyid("password").innertext = "kagemand"

Men i det her tilfelde befinder "Password" sig på en side som bliver loadet i en iframe på den egentlige side. Så mit spørgsmål er hvordan jeg får fat tekstboksen inde i iframen.

I må spørge hvis i ikke forstår hvad jeg mener, synes den var svært at forklare. Iøvrigt bruger jeg visual basic 08

Håber i kan hjælpe mig :)
Acidum.
Avatar billede keysersoze Guru
19. juli 2009 - 22:01 #1
Webbrowser1.document.getelementbyid("iframenavn").getelementbyid("password").innertext = "kagemand"
Avatar billede Acidum Nybegynder
19. juli 2009 - 23:32 #2
Keysersoze, den kode vil programmet ikke godkende. Får fejl. Har prøvet at lave det om til:

Webbrowser1.document.getelementbyid("iframenavn").document.getelementbyid("password").innertext = "kagemand"

Så acceptere den koden, men det fungere stadig ikke.
Avatar billede keysersoze Guru
19. juli 2009 - 23:44 #3
på hvilket tidspunkt kører ovenstående kode - onload? Er indholdet i iframen samme (sub)domain?
Avatar billede Acidum Nybegynder
19. juli 2009 - 23:49 #4
Har sat den så den køre når documentet er hented færdigt i webbrowseren sådan her

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        WebBrowser1.Document.GetElementById("top").Document.GetElementById("username").InnerText = "kagemand"
    End Sub

Hovede siden hedder: http://www.n.dk/frameset.asp
og indholdet af frame hedder: http://www.n.dk/community/login/frTop.asp
Avatar billede keysersoze Guru
20. juli 2009 - 19:06 #5
præcis hvilken fejl får du? et gæt kunne være, at funktionaliteten bliver forsøgt kørt når main-dokumentet er loaded færdigt, men på det tidspunkt er indholdet i framen næppe loaded færdigt.
Avatar billede Acidum Nybegynder
20. juli 2009 - 19:13 #6
Jeg får ingen fejl, der sker bare ikke noget. Men det lyder fornuftigt hvad du siger med at den ikke er loadet færdigt, jeg vil lige prøve at eksperimentere med at lave det i en knap. Vender tilbage når det er prøvet.
Avatar billede Acidum Nybegynder
20. juli 2009 - 19:36 #7
Nu har jeg lige prøvet at lave en knap med koden:


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Document.GetElementById("top").Document.GetElementById("username").InnerText = "Hej" 
    End Sub

Og nu kommer der da i det mindste en fejlmeddelelse, men den siger mig dog ikke så meget:
"NullReferenceException was unhandled"
"Objektreferencen er ikke indstillet til en forekomst af et object"
Avatar billede keysersoze Guru
20. juli 2009 - 19:53 #8
det betyder at et af elementerne, top eller username, ikke eksisterer og det skyldes jo sikkert det samme, altså at iframens indhold ikke er loaded. en mulighed kunne måske være at undgå at benytte javascript og i stedet overføre værdien i en querystring.
Avatar billede Acidum Nybegynder
20. juli 2009 - 20:28 #9
Altså har jo lavet det som en knap og trykker ikke på den før siden er 100% loadet i min webbrowser.

Querystring? Det er nok et noob spg, men hvad er det og hvordan laver jeg det?
Avatar billede keysersoze Guru
21. juli 2009 - 18:40 #10
hvis siden allerede er loadet vil det ikke kunne gøre noget - querystrings er værdier i URL'en.

Det lyder som om du "navigerer" forkert rundt i dine frames eller at elementerne ikke findes - jeg kan fx ikke se et element med id "username" i frTop.asp.
Avatar billede Acidum Nybegynder
21. juli 2009 - 20:44 #11
Det i frtop.asp som hedder username har ikke noget id. Men regnede med at jeg bare dumme bruge "Name=" istedet. Men nu har jeg så prøvede at udskifte den med "pdummy" som er id på password feltet. hvilket ikke gjorde nogen forskel.

Jeg har tænkt på om det måske kan skyldes at der er endnu en frame som indeholder alle de andre frames på siden. Kan bare ikke lige umidelbart finde en "main" frame i kilden. Er sgu lidt lost lige pt, men vil rigtig gerne have det til at virke så jeg prøver at rode videre med det :)
Avatar billede keysersoze Guru
21. juli 2009 - 21:03 #12
du bliver i hvert fald nødt til at starte fra en ende af - først se om document.GetElementById("top") er et object, er det det så bevæger du dig videre til næste element osv. Det er lidt svært at overskue her udefra.
Avatar billede keysersoze Guru
18. september 2009 - 22:49 #13
kommet videre?
Avatar billede Acidum Nybegynder
19. september 2009 - 00:03 #14
Nej jeg står stadig på bar bund :)
Avatar billede keysersoze Guru
19. september 2009 - 00:28 #15
hvad har dine forsøg ud fra  #12 vist?
Avatar billede keysersoze Guru
29. december 2009 - 11:08 #16
?
Avatar billede Acidum Nybegynder
25. marts 2011 - 12:09 #17
..
Avatar billede keysersoze Guru
25. marts 2011 - 18:00 #18
tak for hjælpen...
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
Kurser inden for grundlæggende programmering

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