如何定位并阻止 Javascript 函数?

问题描述 投票:0回答:1

我正在使用的网站有一个烦人的弹出窗口,每隔 x 分钟随机出现在屏幕上。在 Chrome 开发人员工具栏中使用“子树修改时中断”选项,我可以看到它正在调用 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这样的东西来阻止这个。

任何见解将不胜感激,而且到目前为止这是一次宝贵的学习经历。

感谢您花时间阅读本文。

javascript jquery popup block
1个回答
0
投票

在浏览器的调试器中,您通常可以在右侧面板中看到堆栈跟踪视图。这告诉你什么叫 jQuery 函数。你能在那里找到实际的调用代码吗?

如果没有,请尝试在代码中尽早设置断点,然后修补

window.setTimeout
window.setInterval
以获得
debugger;
语句 - 这样您就可以找到调用这些函数的所有位置。

或者在 Chrome 开发工具控制台中的早期断点调用监视器(setTimeout)中监视所有调用。

© www.soinside.com 2019 - 2024. All rights reserved.