2016-12-07 208 views
0

我需要獲取與圖像關聯的鏈接。 正如你可以在下面的代碼中看到的,我有TWebBrowser組件的自定義。我攔截鼠標點擊WebBrowser視圖。TWebBrowser:當我點擊鏈接圖像時獲取鏈接href

當前的代碼適用於常見鏈接,但對於圖像的情況下,當我單擊圖像時無法獲取href鏈接。

當我在圖片的點擊,我得到的鏈接HREF =「https://vimeo.com/194387045」

任何其他方式我能去嗎?

<p>&nbsp;</p> 
<p><a href="https://vimeo.com/194387045" target="_blank"> 
<img src="http://172.16.0.16/static/comunica/436dde8236d078cff2dc76deaa113dbb" 
alt="" /></a></p> 

方法:

Procedure TJBWebBrowser.ValidateLinkClick; 
Var 
    LElement: IHTMLElement; 
    LLink, LTag: String; 
    LCancel: Boolean; 
    LDocument: IHTMLDocument2; 
Begin 

    LDocument := IHTMLDocument2(Document); 

    If Not Assigned(LDocument) Then 
    Exit; 

    LCancel := False; 
    LElement := LDocument.parentWindow.event.srcElement; 
    LTag := Trim(LowerCase(LElemento.tagName)); 

    If LTag = 'a' Then 
    LLink := Trim(LElement.getAttribute('href', 0)); 

    If Assigned(FOnURLClick) Then 
    FOnURLClick(Self, LLink, LCancel); 

    If (LLink <> EmptyStr) And (Not LCancel) Then 
    ShellExecute(0, Nil, PChar(LLink), Nil, Nil, SW_SHOWNORMAL); 
End; 

回答

0

我發現我的疑問解決方案。

感謝大家的幫助。

按照改變後的代碼:

Procedure TJBWebBrowser.ValidateLinkClick; 
Var 
    LElement: IHTMLElement; 
    LLink, LTag: String; 
    LCancel: Boolean; 
    LDocument: IHTMLDocument2; 
Begin 

    LCancel := False; 
    LDocument := IHTMLDocument2(Document); 

    If Not Assigned(LDocument) Then 
    Exit; 

    //Old line 
    //LElement := LDocument.parentWindow.event.srcElement; 

    //New line 
    LElement := LDocument.activeElement; 
    if not Assigned(LElement) then 
    Exit; 

    LTag := Trim(LowerCase(LElement.tagName)); 

    If LTag = 'a' Then 
    LLink := Trim(LElement.getAttribute('href', 0)); 

    If Assigned(FOnURLClick) Then 
    FOnURLClick(Self, LLink, LCancel); 

    If (LLink <> EmptyStr) And (Not LCancel) Then 
    ShellExecute(0, Nil, PChar(LLink), Nil, Nil, SW_SHOWNORMAL); 
End;