0
画像に関連付けられたリンクを取得する必要があります。 以下のコードでわかるように、私はTWebBrowserコンポーネントをカスタマイズしています。 WebBrowserビューでマウスのクリックを傍受します。TWebBrowser:リンクで画像をクリックすると、リンクhrefが表示されます
一般的なリンクでは現在のコードは正常に動作しますが、イメージの場合はイメージをクリックするとhrefリンクを取得できません。私は画像をクリックすると
、私は行くことができるリンクのhref =「https://vimeo.com/194387045」
他の方法を取得する必要がありますか?
<p> </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;
を、あなたは 'srcElement'ではなく' が '' 'が内部に含まれていることよりも、実際の' '自身であることを言っていますか?私は ''タグが 'srcElement'であると予想していました。実際の質問は、代わりにブラウザの独自の 'OnBeforeNavigate2'イベントを使用する代わりに、なぜこのようなHTMLイベントを最初に処理するのでしょうか?これはあなたにナビゲートされているURLと、ナビゲーションをキャンセルするオプションを提供します。 –
@RemyLebeau、ブラウザでクリックされたリンクを取得するプロセスを実装しました。 OnBeforeNavegate2イベントは、WebBrowser1.Navegate( 'https://www.google.com')などのナビゲーション内のURLを提供します。この場合、Navegateメソッドが呼び出されるとOnBeforeNavegate2が実行されます。私の場合ではありません。私はブラウザに設定したHTMLを持っているので、ユーザがクリックしたリンクを検証する必要があります。私のサンプルで、画像をクリックすると、返されるURLはhttp://172.16.0.16/static/comunica/436dde8236d078cff2dc76deaa113dbbです。しかし、私はhttps://vimeo.com/194387045を返す必要があります。 – Delphiman
@Delphiman、No。OnBeforeNavigate2は、リンクをクリックしてURLにナビゲートするたびに起動されます。参照:http://stackoverflow.com/a/25311587/937125 – kobik