TChromium OnClick
TChromium OnClick
我想跟踪用户在 TChromium 中进行了多少次点击。我不在乎他是否点击 "white space"/link/button/image/etc.. 我只想知道他点击了多少次。我希望 TChromium 中有 Onclick 事件,但有 none。我如何知道用户是否点击?
您可以添加一个事件侦听器。这里的问题是 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 引擎)..
我想跟踪用户在 TChromium 中进行了多少次点击。我不在乎他是否点击 "white space"/link/button/image/etc.. 我只想知道他点击了多少次。我希望 TChromium 中有 Onclick 事件,但有 none。我如何知道用户是否点击?
您可以添加一个事件侦听器。这里的问题是 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 引擎)..