TWebBrowser - 如何检测单击了哪个标签?

时间:2017-02-08 09:56:15

标签: html delphi onclick delphi-xe7 twebbrowser

当DesignMode为ON时,如何检测在TWebBrowser中单击了哪个HTML元素(标记)?

问题:
当DesignMode打开时:

  • Document_OnMouseOver永远不会执行。
  • 文档永远不会完成加载。
  • 单击链接时未调用BeforeNavigate2。

更新:
我需要的是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;

1 个答案:

答案 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;