You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome DevTools Protocol Target域事件无法触发但createTarget可正常运行如何解决

问题原因

  • Target域的事件推送默认处于关闭状态,不存在Target.enable方法是因为该域使用Target.setDiscoverTargets替代了通用enable逻辑,你没有主动开启目标发现的话,浏览器不会主动推送任何Target相关事件。
  • Target.createTarget是客户端主动发起的命令调用,不需要依赖事件推送机制,所以就算没有开启目标发现也可以正常执行。

解决方法

在注册Target事件回调之前,先调用Target.setDiscoverTargets开启目标发现即可,修正后的代码如下:

const CDP = require("chrome-remote-interface");

async function example() {
  let client = await CDP();

  const { Network, Page, Browser, Input, Target, DOM, Runtime } = client;
  await Page.enable();
  // 新增:开启Target目标发现,才能接收相关事件推送
  await Target.setDiscoverTargets({ discover: true });

  Target.targetInfoChanged((param) => {
    console.log("targetInfoChanged", param);
  });

  Target.receivedMessageFromTarget((param) => {
    console.log("receivedMessageFromTarget", param);
  });

  Target.targetCreated((param) => {
    console.log("targetCreated", param);
  });

  Target.targetDestroyed((param) => {
    console.log("targetDestroyed", param);
  });

  Page.loadEventFired((param) => {
    console.log("load", param);
  }); 
  
  await Target.createTarget({ url: "https://www.google.com/" });

  await new Promise(() => {});
  return
}

example();

补充说明

如果需要接收receivedMessageFromTarget事件,还需要额外调用Target.attachToTarget绑定对应目标,或者开启Target.setAutoAttach自动绑定新创建的目标,同时设置flatten参数为true适配新版协议。

内容的提问来源于stack exchange,提问作者user16240458

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 03:15:04