Toon posts:

[VB6] Interactie met webbrowser control

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een VB-formulier met daarop een webbrowser control.
In die webbrowser heb ik vervolgens een pagina met javascript coding.
Is het mogelijk om vanuit De VB applicatie een javascript functie in de pagina aan te roepen??? en kan het dan eventueel ook nog omgekeerd. Dus dat ik vanuit de javascript coding een event in de VB-applicatie kan laten afgaan?

Verwijderd

Om vanuit vb een javascript functie aan te roepen, kan je het volgende aanpassen:
code:
1
    WebBrowser1.Document.parentWindow.alert "ok"


Om een event te laten afgaan, dien je het volgende toe te voegen:
code:
1
2
Public WithEvents WebDoc As HTMLDocument
Public WithEvents WebWin As HTMLWindow2


en in de "DocumentComplete" event:
code:
1
2
    Set WebDoc = Browser.Document
    Set WebWin = WebDoc.parentWindow


Dan kan je een event handler toe voegen voor het document of window. Je kan natuurlijk ook andere objecten dan het document of window definiëren en andere event handlers toekennen; dit is maar bij wijze van voorbeeld.
code:
1
2
3
4
5
6
Private Function WebDoc_onclick() As Boolean
    WebDoc_onclick = True
End Function

Private Sub WebDoc_onkeydown()
End Sub

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

@flussieke.. Niet helemaal ontopic.. maar ik zat eigenlijk te kijken om een event te raisen als ik wat text selecteer in een document binnen de webbrowser control.. gaat dat werken? Onclick.. OK.. maar selecteren van text?

Verwijderd

Hier heb je een voorbeeld dat ik snel in elkaar heb gestoken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public WithEvents WebDoc As HTMLDocument

Private Sub Form_Load()
    WebBrowser1.Navigate2 "http://www.google.com"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Set WebDoc = WebBrowser1.Document
End Sub

Private Sub WebDoc_onselectionchange()
    Dim txtRange As IHTMLTxtRange
    Set txtRange = WebDoc.selection.createRange()
    If Not IsEmpty(txtRange) Then
        If txtRange.text <> "" Then
            MsgBox txtRange.text
        End If
    End If
End Sub

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

eeeeuh dat laatste werkt dus niet helemaal.. zowel in formulier (withevents werkt dus niet) als in een class (webbrowser control.. waar moet ik die laten dan?)....

Verwijderd

Je hebt wellicht geen referentie toegevoegd naar de "Microsoft HTML Object Library" en de "Microsoft Internet Controls"

Je dient gewoon een WebBrowser control op je form te plaatsen.

[ Voor 41% gewijzigd door Verwijderd op 01-03-2004 09:41 ]


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

Verwijderd schreef op 01 maart 2004 @ 09:39:
Je hebt wellicht geen referentie toegevoegd naar de "Microsoft HTML Object Library" en de "Microsoft Internet Controls"

Je dient gewoon een WebBrowser control op je form te plaatsen.
Dat had ik natuurlijk al gedaan.. en ja ook heet de control webbrowser1.. dussum..
Jij zegt dus dat je een object kan declaren met withevents in een form? eeeuh niet bij een normale executable hoor..
Of moet ik eerst een een eigen webbrowser control (als activex dll) maken om vervolgens weer te gebruiken in mijn executable?

Verwijderd

henkleerssen schreef op 01 maart 2004 @ 11:01:
[...]

Dat had ik natuurlijk al gedaan.. en ja ook heet de control webbrowser1.. dussum..
Jij zegt dus dat je een object kan declaren met withevents in een form? eeeuh niet bij een normale executable hoor..
Of moet ik eerst een een eigen webbrowser control (als activex dll) maken om vervolgens weer te gebruiken in mijn executable?
Ja dat kan, aangezien het geïnitialiseerd wordt in de volgende regel:
code:
1
Set WebDoc = WebBrowser1.Document


Ik heb echt wel de code zelf getest hoor. Krijg je een foutmelding of zo?

Ik vermoed dat je enkel de internet controls als referentie hebt toegevoegd, en niet de html object library. Niet?

[ Voor 14% gewijzigd door Verwijderd op 01-03-2004 11:29 ]


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

eeeuh.. Nou ja het zal wel maar ik had die code van je gewoon gekopieerd.. en de references waren ook goed..> foutmelding. .. nu nog maar eens opnieuw met oud project hetzelfde gedaan.. en nu deed die het wel.. Zal wel weer aan mij liggen..
thanks anyways...

offtopic:
btw eigenlijk raar dat dit document object alleen maar als child werkt binnen een webbrowser.. en niet als een losse aanspreekbare klasse (die je dan ook als hoofd klasse ziet binnen de object browser).. maar dat terzijde..

[ Voor 33% gewijzigd door henkleerssen op 01-03-2004 13:52 ]


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

Ok het ging niet helemaal lekker met selecteren op die manier voor mij (bij elke kleine change gelijk een messagebox).. dus ik heb het een en ander verandert ..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public SelectionChange as Boolean

Private Sub WebDoc_onmouseup()
Dim txtRange As IHTMLTxtRange
Set txtRange = WebDoc.selection.createRange()

If SelectionChange Then

    If Not IsEmpty(txtRange) Then
        If txtRange.Text <> "" Then
            MsgBox txtRange.Text
        End If
    End If
Else
    SelectionChange = False
End If
    

End Sub

Private Sub WebDoc_onselectionchange()
SelectionChange = True
End Sub

[ Voor 91% gewijzigd door henkleerssen op 01-03-2004 14:42 ]

Pagina: 1