jquery 如何定位并阻止JavaScript函数?

i2byvkas  于 10个月前  发布在  jQuery
关注(0)|答案(1)|浏览(122)

我正在使用的一个网站有一个恼人的弹出窗口,每隔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这样的东西来阻止它。
任何见解将非常感谢,加上这是一个宝贵的学习经验,到目前为止。
感谢您花时间阅读这篇文章。

b09cbbtk

b09cbbtk1#

在浏览器的调试器中,您通常可以在右侧面板中看到堆栈跟踪视图。这告诉您什么调用了jQuery函数。
如果你看不到跟踪,例如堆栈跟踪神秘地从一些JavaScript代码或requestAnimationFrame开始,尽可能早地在代码中设置断点,然后修补window.setTimeoutwindow.setInterval以拥有debugger;语句-这样你就可以找到调用这些函数的所有位置。
或者,在前面的断点中,调用Chrome的devtools控制台中的monitor(setpoint)来监视所有调用。

相关问题