如果我知道我有一个值“JohnSmith”存储在浏览器全局空间中的某个对象中,并且我遇到了某个断点,我如何知道哪个对象或变量的值为“JohnSmith”?我有数百个对象,我不想在开发工具中手动搜索它。
我在控制台或代码片段中使用了一些脚本来遍历所有对象,但它们都无法正确搜索或给出一些错误消息。
I tried JS 运行时检查器 https://chrome.google.com/webstore/detail/js-runtime-inspector/iilpjebedgohcmlffhnkhbjhabkdhfmn?hl=en-US这看起来很有希望,但在我的 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 片段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)