我想要跟踪用户在TChromium中点击的次数。我不关心他是否点击“空白”/link/button/image/等。我只想知道他点击了多少次。我希望在TChromium中有Onclick事件,但是没有。我如何知道用户是否点击了?
发布于 2017-08-16 20:16:33
您可以添加事件侦听器。这里的问题是,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;Hacky,对吧:)?我会尝试想出更好的方法(使用V8引擎)..
https://stackoverflow.com/questions/45712297
复制相似问题