Webkit location URL

22/03/2012 - 07:35 von Hermie | Report spam
Sorry, ich finde es gerade nicht mehr:
Wie kann ich bitte nochmal beim Webkit-Browser die aktuelle URL abfragen?

Dankeschön.

Hermann
 

Lesen sie die antworten

#1 Martin KoWi
22/03/2012 - 09:41 | Warnen spam
Am 22.03.2012 07:35, schrieb Hermie:

Sorry, ich finde es gerade nicht mehr:
Wie kann ich bitte nochmal beim Webkit-Browser die aktuelle URL abfragen?



hmm, da ich nicht annehme dass sich deine Frage auf die URL bezieht,
die du in Browser_LoadCommited(URL As String) sowieso bekommst,
hànge ich dir unten nochmal Olafs Antwort an deine frühere Frage dran.

gruß, martin.



Am 28.10.2011 06:35, schrieb Hermie:
Danke.

Gibt es im Browser auch sowas wie CurrentLocation oder so? Ich habe
nichts gefunden.

Ich frage, weil die links ja oft relativ sind (also z. B. so:
"/newpage.htm"). Da muss man noch per Hand die Root-URL hinzufügen. Im
IE-Control hat er mir die ganzen Links so schön formatiert
zurückgeliefert, also immer mit dem entsprechenden http://.

Falls der link in einem Frame ist, ist ja nicht unbedingt gegeben, dass
der relative link sich auf die Root-URL bezieht, denke ich.



Unten dann etwas Code, welcher die Links Frame-bezogen
enumeriert - auf dem IWebFrame-Typ kann man dann
die URL z.B. über:
Frame.DataSource.initialRequest.URL
auslesen - relative Links aus den <a>-Tags dann dort entspr.
"dranbasteln" (das erledigt der untenstehende Beispiel-Code
jedoch noch nicht).

Um an den aktuellen MainFrame auf dem aktuellen
WebView zu gelangen reicht folgendes (z.B. im
LoadFinished-Event):

Dim WV As WebView
Set WV = Browser.WebView
EnumerateLinksForFrame WV.mainFrame '<- start with the MainFrame

Und hier die framebasierte Link-Enumeration
(rekursiv aufgerufen für SubFrames):

Private Sub EnumerateLinksForFrame(Frame As IWebFrame)
Dim i As Long, NodeList As IDOMNodeList
Dim Node As IDOMNode, LnkElmt As IDOMHTMLElement
If Frame Is Nothing Then Exit Sub
Debug.Print Frame.Name, Frame.DataSource.initialRequest.URL

Set NodeList = Frame.DOMDocument.GetElementsByTagName("a")
If NodeList.length = 0 Then Exit Sub
Debug.Print "Start Enumeration von Link-Tags"
For i = 0 To NodeList.length - 1
Set Node = NodeList.item(i)
Set LnkElmt = Node 'cast von IDOMNode auf IDOMHTMLElement
Debug.Print LnkElmt.innerText; " --> ";

On Error Resume Next
Set Node = LnkElmt.Attributes.getNamedItem("href")
On Error GoTo 0
If Not Node Is Nothing Then
Debug.Print Node.textContent
Else
Debug.Print
End If
Next i
Debug.Print "--Ende Enumeration von Link-Tags-"; vbCrLf

Dim FrameElmt As IDOMHTMLElement
'recursive Link-Enumeration-Call for normal Frames
Set NodeList = Frame.DOMDocument.GetElementsByTagName("frame")
For i = 0 To NodeList.length - 1
Set FrameElmt = NodeList.item(i)
If Len(FrameElmt.idName) Then
EnumerateLinksForFrame Frame.findFrameNamed(FrameElmt.idName)
End If
Next i
'recursive Link-Enumeration-Call for iFrames
Set NodeList = Frame.DOMDocument.GetElementsByTagName("iframe")
For i = 0 To NodeList.length - 1
Set FrameElmt = NodeList.item(i)
If Len(FrameElmt.idName) Then
EnumerateLinksForFrame Frame.findFrameNamed(FrameElmt.idName)
End If
Next i
End Sub


Olaf

Ähnliche fragen