javascript - 如何搜索浏览器窗口对象以查找哪个对象或变量具有搜索值?

标签 javascript google-chrome google-chrome-devtools

如果我知道我有一个值“JohnSmith”存储在浏览器全局空间中的某个对象中,并且我遇到了某个断点,我如何知道哪个对象或变量的值为“JohnSmith”?我有数百个对象,我不想在开发工具中手动搜索它。 我在控制台或代码片段中使用了一些脚本来遍历所有对象,但它们都无法正确搜索或给出一些错误消息。

我试过JS Runtime Inspector这看起来很有希望,但在我的 Chrome 61 版本中根本不起作用。它的子选项卡不像他们的视频那样显示。

最佳答案

这是我保留在开发工具片段面板中的片段:

{
  const checked = new Set();
  const dig = (value, o=window, path='') => {
    function check(v, name) {
      if ((typeof v == 'string' || typeof v == 'number')
      && String(v).toLowerCase().includes(value)) {
        console.log('%s in %s %o', v, path + name, o);
      } else if (v && typeof v == 'object' && v != window && !v.nodeName) {
        dig(value, v, path + name + '.');
      }
    }
    if (o && o.forEach) {
      for (let len = o.length, i; i < len; i++)
        check(o[i], `[${i}]`);
    } else if (typeof o == 'object') {
      for (const k of Object.getOwnPropertyNames(o)) {
        if (k.startsWith('webkit'))
          continue;
        try {
          const v = o[k];
          if (checked.has(v))
            continue;
          checked.add(v);
          check(v, k);
        }
        catch(e) {}
      }
    } else
      check(v);
  };

  console.group();
  dig('JohnSmith');
  console.groupEnd();
}

您可以通过按 Ctrl-Enter 来运行 devtools 代码段。

关于javascript - 如何搜索浏览器窗口对象以查找哪个对象或变量具有搜索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46535646/

相关文章:

Chrome Inspector 中的 Javascript 调试 : variables are shown undefined in watches and console but can be inspected when hovered

javascript - 优化jsp页面图片加载

javascript - 以编程方式导航到不同的路线并传递查询

google-chrome - 检查元素上的 Google chrome 白屏

google-chrome - 得到 "you are using unsupported command-line flag: --disable-web-security. Stability and security will suffer"错误

javascript - 如何编写一个针对以 "window.open()"打开的窗口的 Chrome 扩展程序?

javascript - 使用 javascript 和 Angular 进行嵌套计算 (v1)

javascript - 你如何在 jQuery 的 document.ready 中使用揭示模块模式?

javascript - 谷歌浏览器在打印预览中不显示图像

javascript - 使用 Puppeteer 将 CSS 注入(inject)站点