2016-12-07 2 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; 
+2

@Delphiman, №. «OnBeforeNavigate2» запускается каждый раз, когда вы нажимаете ссылку и переходите к URL-адресу. см. http://stackoverflow.com/a/25311587/937125 – kobik

ответ

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; 
Смежные вопросы