我正在使用的一个网站有一个恼人的弹出窗口,每隔x分钟随机出现在屏幕上。在Chrome开发者工具栏中使用“break on subtree modifications”选项,我可以看到它正在调用jquery-2.0.3.min.js中的insertBefore和removeChild函数。具体如下。
before: function() {
return this.domManip(arguments, function(e) {
this.parentNode && this.parentNode.insertBefore(e, this)
})
},
after: function() {
return this.domManip(arguments, function(e) {
this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
})
},
remove: function(e, t) {
var n, r = e ? x.filter(e, this) : this, i = 0;
for (; null != (n = r[i]); i++)
t || 1 !== n.nodeType || x.cleanData(mt(n)),
n.parentNode && (t && x.contains(n.ownerDocument, n) && dt(mt(n, "script")),
n.parentNode.removeChild(n));
return this
},
字符串
在网站上,它生成一个带有随机css id的div,停留一分钟后就消失了。
看起来不像是什么特殊事件导致了它的燃烧。
你有没有什么提示,告诉我如何才能找到更多关于正在发生的事情,以及如何阻止它?我相信我应该能够使用像greasemonkey这样的东西来阻止它。
任何见解将非常感谢,加上这是一个宝贵的学习经验,到目前为止。
感谢您花时间阅读这篇文章。
1条答案
按热度按时间b09cbbtk1#
在浏览器的调试器中,您通常可以在右侧面板中看到堆栈跟踪视图。这告诉您什么调用了jQuery函数。
如果你看不到跟踪,例如堆栈跟踪神秘地从一些JavaScript代码或requestAnimationFrame开始,尽可能早地在代码中设置断点,然后修补
window.setTimeout
和window.setInterval
以拥有debugger;
语句-这样你就可以找到调用这些函数的所有位置。或者,在前面的断点中,调用Chrome的devtools控制台中的monitor(setpoint)来监视所有调用。