我想跟踪用户在TChromium中进行了多少点击。我不在乎他是否单击“空白” /链接/按钮/图像/等。我只想知道他点击了多少次。我希望TChromium中有Onclick事件,但没有。我怎么知道用户是否点击?
最佳答案
您可以添加事件监听器。这里的问题是CEF3不像CEF1那样支持DOM事件侦听器,因此在这里并不是那么容易(尽管并非不可能)。在我尝试制作V8交互示例之前,一个很肮脏的解决方法可能是这样。您创建了一个足够唯一的字符串,为整个文档添加了一个事件侦听器,在这种情况下,您使用该唯一的字符串记录了消息。在Delphi中,您将等待该唯一的日志消息,例如:
const
MyClickMessage = '08B52B44-748F-44BB-AC6C-5179D6C1F523';
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);
begin
if frame.IsMain then
frame.ExecuteJavaScript(
'document.addEventListener("click", function(evnt){' +
'console.log("' + MyClickMessage + '");' +
'});',
'',
0);
end;
procedure TForm1.Chromium1ConsoleMessage(Sender: TObject; const browser: ICefBrowser;
const message, source: ustring; line: Integer; out Result: Boolean);
begin
if message = MyClickMessage then
begin
Result := True;
ShowMessage('User clicked!');
end;
end;
哈克,对吧我将尝试提出更好的方法(使用V8引擎)。
关于delphi - TChromium OnClick,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45712297/