如何查看是否在浏览器中选择了文本然后检索它?

时间:2013-11-13 01:15:10

标签: delphi chromium chromium-embedded tchromium

我想知道TChromiumFMX浏览器组件是否包含用户选择的文本,如果是,则检索该文本,而无需用户首先将其复制到剪贴板(ctrl-c)。


改进TLama的答案: 如果您没有使用ShowMessage,则在退出Button1Click之前匿名过程并不总是已完成,因此通常不会产生任何结果(或太迟)。因此,可以检查Done:= true,因为可以检查过程的最后一行是否已检索到该值:

procedure TForm1.Button1Click(Sender: TObject);
var Done: boolean;
begin
  Done := false;
  Chromium1.Browser.GetFocusedFrame.VisitDomProc(
    procedure(const document: ICefDomDocument)
    begin
      SelectedText := document.SelectionAsText;
      Done := true
    end
  );
  while not Done do Application.ProcessMessages
end;

1 个答案:

答案 0 :(得分:5)

您必须访问DOM,作为礼物,您将收到对当前ICefDomDocument文档界面的引用。然后ICefDomDocument接口提供SelectionAsText方法,该方法将当前选择作为文本返回(如果有的话)。在代码中,您可以编写如下内容:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Chromium1.Browser.GetFocusedFrame.VisitDomProc(
    procedure(const document: ICefDomDocument)
    begin
      ShowMessage(document.SelectionAsText);
    end
  );
end;