Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何使用dcef3启用远程调试_Delphi - Fatal编程技术网

Delphi 如何使用dcef3启用远程调试

Delphi 如何使用dcef3启用远程调试,delphi,Delphi,我正在使用dcef3在我的Delphi应用程序中嵌入浏览器。我想启用远程调试,以便检查嵌入式浏览器中运行的javascript代码 当显示包含TChromium控件的父窗体时,我尝试启用远程调试端口,但我不确定如何继续以实际访问调试器: procedure TMapViewSingleSector.FormShow(Sender: TObject); begin CefRemoteDebuggingPort := 9000; ChromeView.Load('http://local

我正在使用dcef3在我的Delphi应用程序中嵌入浏览器。我想启用远程调试,以便检查嵌入式浏览器中运行的javascript代码

当显示包含TChromium控件的父窗体时,我尝试启用远程调试端口,但我不确定如何继续以实际访问调试器:

procedure TMapViewSingleSector.FormShow(Sender: TObject);
begin
   CefRemoteDebuggingPort := 9000;
   ChromeView.Load('http://localhost:8080/');
end;
但是,当我尝试从另一个chrome浏览器访问localhost:9000时,页面无法加载

编辑:我将
cefmotedebuggingport
初始化移动到表单初始化部分(在表单显示之前)。现在,当我将google chrome指向端口9000时,我可以看到网络组件。但是,我还有一个错误:

inspector.js:10392 Uncaught TypeError: Object.observe is not a function
    at WebInspector.Main._createSettings (inspector.js:10392)
    at WebInspector.Main._gotPreferences (inspector.js:10384)
    at WebInspector.InspectorFrontendHostStub.getPreferences (inspector.js:1352)
    at WebInspector.Main._loaded (inspector.js:10383)
    at windowLoaded (inspector.js:677)

注意:我的chrome浏览器的版本与DCEF3不同。

我只需从代码中打开开发者工具控制台。有这样做的方法。为此,您可以使用专用按钮,例如,在HTML页面内创建一个假链接,然后取消导航并显示控制台。例如,当有此假链接时:


您可以在应用程序中编写类似的内容:

procedure TForm1.Chromium1BeforeBrowse(Sender: TObject;
  const browser: ICefBrowser; const frame: ICefFrame;
  const request: ICefRequest; isRedirect: Boolean; out Result: Boolean);
const
  UrlShowDevTools = 'ShowDevTools.fake';
begin
  { if the user clicked link and URL equals to the fake one }
  if (Request.TransitionType = TT_LINK) and (Request.Url = UrlShowDevTools) then
  begin
    { cancel navigation }
    Result := True;
    { show the developer tools console }
    TChromium(Sender).ShowDevTools;
  end;
end;

二进制文件所在的目录中是否有cef.pak和devtools_resources.pak?我已经很容易地使用了debugger@RBA是的,cef.pak和devtools_resources.pak都位于二进制目录中。请注意,我可以在表单中成功打开调试工具(我要做的是启用远程调试)。是否有特定的过程来启用远程调试?请看-@RBA OK我有一些进展:),因此基本上我将调试端口的初始化移到了表单初始化部分(在表单显示之前)。当我将google chrome指向端口9000时,我看不到网络组件。但是我现在有另一个错误(请参见编辑)。
{$IFDEF DEBUG}ChromeBrowser.ShowDevTools;{$ENDIF}
就足够了。或者有一个隐藏按钮,通过该条件显示。或者,您可以导航到一个“假”站点,并在浏览前事件中使用该方法打开开发工具。