有一个页面,当你将鼠标悬停在图像上时,它会显示某个值。我需要以编程方式从页面获取该值。我可以在页面中访问JS控制台,但不知道它来自哪里。
我尝试在DOM更改上添加断点,但仍然不清楚数据来自何处。
我也尝试过转储整个window对象,但它似乎没有转储足够的数据或包含显示的数据(数字)(从Chrome sendrequest error: TypeError: Converting circular structure to JSON中提取的审查函数)
function censor(censor) {
var i = 0;
return function(key, value) {
if(i !== 0 && typeof(censor) === 'object' && typeof(value) == 'object' && censor == value)
return '[Circular]';
if(i >= 1129)
return '[Unknown]';
++i; // so we know we aren't using the original object anymore
return value;
}
}
for(var key in window){
console.log(key);
if(key === 'frames' || key === 'self' || key === 'window' || key === 'parent' || key === 'top' || key === 'document') continue;
console.log(JSON.stringify(window[key], censor(window[key])))
}有没有什么想法可以让我完全转储页面中的数据(这样我就可以搜索它的确切来源),或者清楚地跟踪DOM中的数据来自哪里?DOM元素在图像悬停时添加,然后在鼠标移开时删除。
发布于 2018-04-23 02:18:14
使用Chrome开发工具,选择right-click元素并选择inspect。在右侧面板中,选择Event Listeners选项卡。在列表中,展开上的鼠标(或其他适当的事件)。
您将看到直接影响该元素的代码的链接。
编辑#1
参考有关从其他(可能是非受控的)代码检索数据的注释:
如果该数据是在不是由您的代码创建的闭包中创建/派生/控制的,则您不太可能能够检索到。这就是JavaScript中闭包的本质。数据可能在您无法触及的气泡中。
编辑#2
可以使用的一个技巧是:在元素上强制使用mouseover事件。这会将您想要的值放入DOM中。从DOM中提取值。然后关闭mouseover事件。
https://stackoverflow.com/questions/49969171
复制相似问题