当DesignMode为ON时,如何检测在TWebBrowser中单击了哪个HTML元素(标记)?
问题:
当DesignMode打开时:
更新:
我需要的是IHTMLTxtRange(我想)。当我双击一个链接/单词时它可以工作。但是,如果没有选择文本/链接,我不知道如何在插入符号下获取标记。
procedure TForm1.getRange;
var
Sel: IHTMLSelectionObject;
Range: IHTMLTxtRange;
Doc: IHTMLDocument2;
begin
Doc := EmbeddedWB.Doc2;
if Assigned(Doc) then
begin
Sel := Doc.selection;
if Assigned(Sel) then
begin
if (Sel.type_ = 'None') or (Sel.type_ = 'Text') then
begin
Range := Sel.createRange as IHTMLTxtRange;
Range.expand('word');
Memo.Text:=
Range.htmlText + crlf + // full tag
Range.text; // only text
end;
end;
end;
答案 0 :(得分:1)
这是如何使用鼠标坐标获取在浏览器中被点击的元素的示例!
var
X, Y: Integer;
document,E: OleVariant;
begin
if (Msg.message = WM_LBUTTONDOWN) and IsDialogMessage(WebBrowser1.Handle, Msg) then
begin
X := LOWORD(Msg.lParam);
Y := HIWORD(Msg.lParam);
document := WebBrowser1.Document;
E := document.elementFromPoint(X, Y);
Edit1.Text := 'You clicked on:' + E.outerHTML;
end;
Handled := False;
end;