【发布时间】:2017-02-08 10:28:41
【问题描述】:
我想检测哪个 HTML 标记(更准确地说是超链接)是插入符号。
procedure THTMLEdit.ShowTag;
var
CursorPos: TPoint;
HtmlElement: IHTMLElement;
iHTMLDoc: IHtmlDocument2;
begin
if Supports(wbBrowser.Document, IHtmlDocument2, iHTMLDoc) then
begin
if GetcaretPos(CursorPos) then
begin
CursorPos := wbBrowser.screentoclient(CursorPos);
HtmlElement := iHTMLDoc.ElementFromPoint(CursorPos.X, CursorPos.Y); // I NEED KEYBOARD CARET HERE, NOT MOUSE CURSOR
if HtmlElement <> NIL
then label1.Caption:= HtmlElement.tagName;
end;
end;
end;
注意事项:
TWebBrowser 处于设计模式 ( DesignMode := 'On' )。
TWebBrowser 在设计时采用自己的形式,但在运行时以另一种形式(在面板中)重新设置父级。
更新:
我需要的是 IHTMLTxtRange (我认为)。当我双击链接/单词时,它会起作用。但是当没有选择文本/链接时,我不知道如何在插入符号下获取标签。
【问题讨论】:
-
你可以看看我对这个 q:stackoverflow.com/questions/25527367/… 的回答,尤其是
TForm1.AnEvent -
这样模糊的信息很难帮助你。你想要光标下的标签吗?但是你打电话给
GetCaretPos。你想要光标还是插入符号?在您的其他问题中,您显然只对<a>链接感兴趣。你能放慢速度,花点时间,告诉我们你实际上在做什么。用一系列不精确和不清楚的问题向我们发送垃圾邮件是没有建设性的,并且表明阻碍您的思维混乱。 -
[通常]当您单击编辑器时,光标和插入符号会在同一个位置。但你是对的,我是模棱两可的。我想要插入符号下的标签。
-
@DarkPresidentOfAmerica,您可以使用 MartynA 的回答处理
onmouseup事件。然后类似:rg:=Doc.selection.createRange; rg.collapse; el:=rg.parentElement; -
在什么情况下你调用 ShowTag?
标签: html delphi internet-explorer delphi-xe7 twebbrowser