我想跟踪用户在TChromium中点击了多少次。我不在乎他是否点击了"空白"/链接/按钮/图像等。。我只想知道他点击了多少次。我希望TChromium有点击事件,但没有。如何知道用户是否点击?
您可以添加一个事件侦听器。这里的问题是,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发动机)。。